时间:2021-07-01 10:21:17 帮助过:21人阅读
上一节说到了《mongodb 文档的嵌入和引用》。MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型。MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link)。那么何时Embed何时Link呢?那得看两个实体之间的关系是什么类
上一节说到了《mongodb 文档的嵌入和引用》。MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型。MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link)。那么何时Embed何时Link呢?那得看两个实体之间的关系是什么类型。 一对一的关系:Embed,比如用户信息集合有Address字段,Address字段有省、市、县三个字段。建模如下: 一对多关系:一篇文章有多条评论,为1对多关系 由于MongoDB对单个文档(document)有大小限制16M(高于v1.8),设计时也要将这个限制纳入考虑中。 多对多关系:学生和课程是多对多的关系,一个学生可以选多门课程,一门课程有多名学生参与。 多对多使用了连接(Linking),连接是通过引用(References)来连接两个集合。MongoDB References有两种:一种是 手动引用(Manual References),另一种是DBRefs。 Manual References: 红框地方就是Manual References,如果想查询一篇文章的作者信息,首先在post集合找出那篇文章,然后在user集合查找出用户的全部信息。但是假如有这么一个场景:用户可以对图片,文章等各种资源评论,所有的评论都放在comment集合中,如果只是使用Manual References,就分不清楚评论到底是属于哪类资源了,图片?文章?。所以有了DBRef。 DBRef的形式: { $ref :原文地址:mongodb 数据建模, 感谢原作者分享。