【发布时间】:2016-05-02 03:57:40
【问题描述】:
我正在为一个新项目设计 MongoDB 集合架构,作为 MongoDB 新手,我有一个关于一对多关系的问题。
为了这个例子,假设关系是数据中心到服务器,这意味着一个数据中心可以有多个服务器(数千个,在应用程序中不限制),服务器只能属于一个数据中心。
最好让Servers._datacenter 引用Datacenter._id 吗?还是一个 Datacenter.servers array 来存储服务器 ID?
如果您建议在 Datacenter 文档中使用 array 来引用与之关联的服务器 ID... 那么有没有办法在您刚刚拥有时找出服务器所属的 Datacenter服务器ID? (有点像快速的where serverId in Datacenter.servers 查询)无需查询每个数据中心,然后检查每个 Datacenter.servers 数组中的 ID
如果您建议在 Servers 文档中包含一个元素来引用它所属的 Datacenter,那么有没有办法查询 Datacenter,并在虚拟 Documents.servers 数组或其他东西中返回所有关联的 Server 文档?
我不太确定最好的方法是什么,因为每个数据中心可能有非常大量的服务器,我认为在每个数据中心文档中没有这么大的数组可能是一个更好的主意。 .. 但是,如果我将其设置为每个服务器文档中都引用了父数据中心,这会使查询变得相当困难(或者不是?也许有一个我还没有发现的非常简单的方法,我确实说过我是Mongo 新手)
我正在阅读this document,它显示了如何向上设置参考方向,并指出:
为避免可变的、不断增长的数组,请将出版商引用存储在图书文档中
这让我觉得最好在服务器文档中引用数据中心 ID。如果是这样,有没有办法将所有服务器文档作为数据中心文档中的数组返回?或者我是否必须查询数据中心,然后查询具有该数据中心._id 的所有服务器,然后返回一个合并对象..
【问题讨论】:
-
这取决于您的用例和您的 UI 屏幕?
-
UI 屏幕是什么意思?你要截图吗?
标签: node.js mongodb mongoose mongodb-query mongoose-schema