MongoDB:使用子代数组填充父代vs通过父代ID搜索子代

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB:使用子代数组填充父代vs通过父代ID搜索子代相关的知识,希望对你有一定的参考价值。

我正在和我的经理就数据库结构发生争执。

我们需要创建一个具有多个子代的父类型对象,并查询属于该父代的所有子代的列表。

我想在父对象中使用子ObjectId的数组,这些对象在创建子对象时添加。可以使用FindById找到父级,然后可以使用populate()填充子级列表。

我的经理坚持not在父级中存储子级数组,但仅将父级ID作为字段存储在每个子级对象中,然后通过搜索具有父级子级的所有子级对象来获取列表ID。他声称这将是同样快的,因为“无论如何,填充只会通过id搜索对象”。

但是,对于我来说,这一样快是不可思议的。 _id字段的全部要点不是为文件的位置编制索引以便快速检索吗?难道不应该找到一个拥有_id的对象列表,而不是在整个数据库中查找给定字段与给定值匹配的对象时,更快,更可扩展吗?

在这种情况下是否有理由使用填充? (当然,在子对象中存储对父对象的引用也是一种选择-但他坚持not完全在父对象中存储子对象的数组。)

我正在和我的经理就数据库结构发生争执。我们需要创建一个具有多个子代的父类型对象,并查询属于该父代的所有子代的列表。我想要...
答案
最佳方法不是一个简单的选择,它取决于数据的性质,将来对数据集的期望以及现在和将来如何查询数据。

以上是关于MongoDB:使用子代数组填充父代vs通过父代ID搜索子代的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL父子同表; PHP 将子代嵌套在父代中作为多维数组

后代选择器(CSS选择器)

遗传算法入门C1

VRP问题基于NSGA算法求解多中心VRP问题

差分进化算法和遗传算法 区别 谁更好

旧版弹性盒