gpt4 book ai didi

javascript - MongooseJS 填充反模式吗?

转载 作者:行者123 更新时间:2023-11-30 20:36:59 27 4
gpt4 key购买 nike

我找到了多篇文章和指南,称赞使用 populate() 方法在 Mongoose 和 MongoDB 中进行连接的能力。

这让我很困惑。如果你想做连接,你不应该使用 SQL 数据库吗?加入 MongoDB 不应该是最后的选择吗?

每个使用 populate() 的对象都需要进行第二次查询以获取该数据。因此,如果您在查询中获取 100 个项目,则需要执行另外 100 个查询来获取该数据。在可能的情况下,将其存储为嵌套方案听起来是一个更好的主意。

我错了吗? populate() 实际上是一个有意义的好方法吗?还是我说的对,这是您可以在应该避免的情况下使用的最后选择?

最佳答案

populate() 不会针对每个父文档的每个子文档发送查找请求。

它在过滤器中发送一个包含所有子 ObjectId(所有父对象的!)的单个查找

示例(mongoose.set('debug', true) 控制台输出):

Mongoose: parent.find({}, { fields: {} })   // was called with populate()
Mongoose: child.find({ _id: { '$in': [ ObjectId(A), ObjectId(B), ...] }})

然后可能“加入” Node 中的父 Node 和子 Node 。

所以基本上,只添加了 1 个 RTT。为了尽可能避免这种情况,我针对常见用例对一些模式进行了非规范化。

关于javascript - MongooseJS 填充反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49723981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com