mongodb中的数据建模
admin
2023-04-12 16:21:26
0

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

mongodb中的数据建模

mongodb中的数据建模

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

mongodb中的数据建模mongodb中的数据建模

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

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

mongodb中的数据建模

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

Manual References:

mongodb中的数据建模(user集合)

mongodb中的数据建模(post集合)

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

DBRef的形式:

{ $ref : , $id : , $db : }

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

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

mongodb中的数据建模

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


相关内容

热门资讯

玩家分享攻略“顺欣茶楼开挂器?... 您好:顺欣茶楼这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
玩家分享攻略“微乐云南麻将有挂... 玩家分享攻略“微乐云南麻将有挂吗?”(其实是有挂)您好,微乐云南麻将这个游戏其实有挂的,确实是有挂的...
我来教教您“创乐缘真的有挂吗?... 我来教教您“创乐缘真的有挂吗?”(必胜开挂神器)您好,创乐缘这个游戏其实有挂的,确实是有挂的,需要了...
【第一消息】“乐禧乾安麻将真的... 有 亲,根据资深记者爆料乐禧乾安麻将是可以开挂的,确实有挂(咨询软件无需...
今日重大通报“成就联盟到底有挂... 有 亲,根据资深记者爆料成就联盟是可以开挂的,确实有挂(咨询软件无需打开...
凤凰晚报|被“斩杀”的美国童星... 今日人物【美国“斩杀线”斩落知名童星?】2025年9月的加州里弗赛德市,一名36岁的流浪男子引起一名...
玩家攻略科普“旺旺冲击麻将真的... 有 亲,根据资深记者爆料旺旺冲击麻将是可以开挂的,确实有挂(咨询软件无需...
网红罗大美遇害两年后下葬,妹妹... 据九派新闻,12月28日,罗大美妹妹发文:近日在亲属的陪伴下,哥哥的后事已经妥善完成。在一个小小的仪...
最新引进“数独大赛开挂神器?”... 家人们!今天小编来为大家解答数独大赛透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
【第一消息】“夜猫麻将是不是有... 网上科普关于“夜猫麻将有没有挂”话题很是火热,小编也是针对夜猫麻将作*弊开挂的方法以及开挂对应的知识...