MongoDB,文档或集合之间的关系

MongoDB,文档或集合之间的关系,mongodb,many-to-many,Mongodb,Many To Many,我是NoSQL的新手,MongoDB。如何处理两个或多个集合/文档之间的多对多关系?我们最好使用DBRefs还是嵌入?事实上,我已经阅读了MongoDB手册,但是我没有找到关于多对多关系的内容。我错过了一些要点?或者MongoDB中没有这种关系?谢谢 嵌入与引用 这是嵌入与引用的问题,对于MongoDB的新用户来说,这是一个常见的困惑源。有一个简单的经验法则适用于大多数模式设计场景:当子对象总是出现在其父对象的上下文中时嵌入。否则,将子对象存储在单独的集合中 嵌入或引用它取决于应用程序。假设您正

我是NoSQL的新手,MongoDB。如何处理两个或多个集合/文档之间的多对多关系?我们最好使用DBRefs还是嵌入?事实上,我已经阅读了MongoDB手册,但是我没有找到关于多对多关系的内容。我错过了一些要点?或者MongoDB中没有这种关系?谢谢

嵌入与引用

这是嵌入与引用的问题,对于MongoDB的新用户来说,这是一个常见的困惑源。有一个简单的经验法则适用于大多数模式设计场景:当子对象总是出现在其父对象的上下文中时嵌入。否则,将子对象存储在单独的集合中

嵌入或引用它取决于应用程序。假设您正在MongoDB中构建一个存储博客文章和评论的简单应用程序。如果评论总是出现在博客文章中,并且不需要以任意方式(按发布日期、评论排名等)排序,那么嵌入就可以了。但是,如果你想显示最新的评论,不管它们出现在哪个帖子上,那么你就需要引用它们。嵌入可能提供一点性能优势,但引用要灵活得多

多对多

在RDBMS中,使用联接表表示多对多关系;在MongoDB中,使用数组键。例如,每个产品都包含一个类别ID数组,产品和类别都有自己的集合。如果您有两个简单的类别文档

{ _id: ObjectId("4d6574baa6b804ea563c132a"),
title: "Epiphytes"
}

{ _id: ObjectId("4d6574baa6b804ea563c459d"),
title: "Greenhouse flowers"
}
然后,属于这两个类别的产品将如下所示:

{ _id: ObjectId("4d6574baa6b804ea563ca982"),
name: "Dragon Orchid",
category_ids: [ ObjectId("4d6574baa6b804ea563c132a"),
ObjectId("4d6574baa6b804ea563c459d") ]
}

这是一个很常见的问题,谷歌搜索一点,你至少可以得到300个阅读链接;mre比任何人都能在一个单一的答案中提供。如何关联在很大程度上取决于您的数据和访问模式,因此这个问题在当前的上下文中太模糊了。您是对的,mongodb文档没有涉及多对多关系。如果在关系模型中有这样的关系,那么在使用非关系数据库时,它可能会发生很大的变化。要获得帮助,您必须解释您的模型。