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

问题描述 投票:0回答:1

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

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

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

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

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

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

我正在和我的经理就数据库结构发生争执。我们需要创建一个具有多个子代的父类型对象,并查询属于该父代的所有子代的列表。我想要...
mongodb performance indexing mongoose-populate
1个回答
0
投票
最佳方法不是一个简单的选择,它取决于数据的性质,将来对数据集的期望以及现在和将来如何查询数据。
© www.soinside.com 2019 - 2024. All rights reserved.