MongoDB之数据建模

  发布时间:2025-11-04 10:45:41   作者:玩站小弟   我要评论
一对一的关系:Embed,比如用户信息集合有Address字段,Address字段有省、市、县三个字段。建模如下:一对多关系:一篇文章有多条评论,为1对多关系由于MongoDB对单个文档(docume 。

 一对一的数据关系:Embed,比如用户信息集合有Address字段,建模Address字段有省、数据市、建模县三个字段。数据建模如下:

一对多关系:一篇文章有多条评论,建模为1对多关系

由于MongoDB对单个文档(document)有大小限制16M(高于v1.8),数据设计时也要将这个限制纳入考虑中。建模

多对多关系:学生和课程是数据多对多的关系,一个学生可以选多门课程,建模一门课程有多名学生参与。数据

多对多使用了连接(Linking),建模连接是数据通过引用(References)来连接两个集合。MongoDB References有两种:一种是建模 手动引用(Manual References),另一种是数据DBRefs。

Manual References:

(user集合)

(post集合)

红框地方就是Manual References,免费源码下载如果想查询一篇文章的作者信息,首先在post集合找出那篇文章,然后在user集合查找出用户的全部信息。但是假如有这么一个场景:用户可以对图片,文章等各种资源评论,所有的评论都放在comment集合中,如果只是使用Manual References,就分不清楚评论到底是属于哪类资源了,图片?文章?。所以有了DBRef。

DBRef的形式:

{ $ref : <value>, $id : <value>, $db : <value> }

$ref:集合名称;$id:引用的id;$db:数据库名称,可选参数。

可以看到DBRef的结构比Manual References的站群服务器复杂,占用的空间大,但是功能也强大,如果要跨数据库连接,上面讲的评论集合的例子,都得需要使用DBRef,MongoDB提供了函数来解析DBRef,不用像Manual References需要自己手动写两次查询。

关于MongoDB的数据建模MongoDB官网也给出了一些建议。这些建议都是提供了一些参考,实际建模需要根据具体的需求来分析,分析数据经常会执行哪些操作(排序,查找,修改)来选择Embed和Link。

原文链接:http://www.cnblogs.com/alab/archive/2012/07/25/2608905.html

【编辑推荐】

MongoDB 2.0 正式版发布 MongoDB 2.0新功能逐个看之Compact Command 主流NoSQL数据库全方位评测之MongoDB 教你如何利用MySQL学习MongoDB 在Windows环境下MongoDB搭建和简单操作云南idc服务商
  • Tag:

相关文章

  • 用电脑做系统XP教程光盘,轻松学习配置系统(自学成才,操作简单,教程详细易懂)

    摘要:在数字时代,电脑已经成为我们生活中必不可少的工具。然而,对于许多人来说,电脑的系统配置似乎是一个难题。为了帮助大家更轻松地掌握系统XP的配置技巧,我们推出了这款电脑系统XP教程光盘...
    2025-11-04
  • Golang Channel 三大坑,你踩过了嘛?

    1. 前言在使用 channel 进行 goroutine 之间的通信时,有时候场面会变得十分复杂,以至于写出难以觉察、难以定位的偶现 bug,而且上线的时候往往跑得好好的,直到某一天深夜收到服务挂了
    2025-11-04
  • 干货!MySQL DAL中间件总结

    1、前言MySql 作为互联网公司都会用到的数据库,如果在使用过程中出现性能问题,会采用mysql的横向扩展,使用主从复制来提高读性能,要是解决写入问题,需要进行分库分表。本文不会去介绍MySql 的
    2025-11-04
  • 一文总结MySQL数据库访问控制实现原理

    MySQL 访问控制实际上由两个功能模块共同组成,一个是负责“看守 MySQL 大门”的用户管理模块,另一个就是负责监控来访者每一个动作的访问控制模块。用户管理模块决定用户是否能登陆数据库,而访问控制
    2025-11-04
  • 从零开始学习服装电脑排版教程(手把手教你成为服装电脑排版新手)

    摘要:服装电脑排版是现代服装设计师必备的一项技能,它可以帮助我们在电脑上完成服装设计、样板制作等工作。对于初学者来说,掌握这门技术可能有些困难,但只要有正确的学习方法和坚持不懈的态度,相...
    2025-11-04
  • Python中值得学习的第三方JSON库

    我们在日常使用Python的过程中,经常会使用json格式存储一些数据,尤其是在web开发中。而Python原生的json库性能差、功能少,只能堪堪应对简单轻量的json数据存储转换需求。而本文我要给
    2025-11-04

最新评论