【问题标题】:MongoDB $lookup vs Mongoose populateMongoDB $lookup 与 Mongoose 填充
【发布时间】:2020-10-14 21:08:28
【问题描述】:

我见过this 和其他类似标题的问题,没有人回答我的问题。

我正在阅读我阅读的mongoose documentation

MongoDB 在版本中具有类似连接的 $lookup 聚合运算符 >= 3.2. Mongoose 有一个更强大的替代方法,称为 populate(),它可以让您引用其他集合中的文档。

populate() 在 mongoose 中的作用如何使其比 MongoDB 的 $lookup 更强大?

mongoose 不是一个可以帮助 nodejs 用户使用 mongodb 的工具吗?如果是这样,mongoose 怎么能拥有 MongoDB 没有的功能呢?喜欢populate()

mongoose 的populate() 方法是否在幕后使用了MongoDB 的$lookup

【问题讨论】:

  • 感谢您的链接。我已经阅读了整个线程。现在我知道 mongoose 的 populate() 方法并没有在幕后使用 MongoDB 的 $lookup。而且我知道填充方法会多次访问数据库进行填充。我还看到,在获取一系列文档时,populate() 更快。但是为什么人们希望populate() 使用$lookup
  • 在底层使用 $lookup 进行填充将允许人们使用 .populate() 语法而不是 $aggregation。如果您需要$lookup 的性能,那么此时您必须使用$aggregation。此外,如果 mongoose 使用 mongodb 中可用的功能而不是使用它自己的“框架”功能会更好。
  • @GrégoryNEUT 我曾就同一主题询问过another similar question。请看一看。谢谢。

标签: node.js mongodb mongoose mongoose-populate mongodb-lookup


【解决方案1】:

感谢Grégory NEUT 在问题的cmets 中分享的github thread,我已经能够确定某些事实:

  1. Mongoose 的 populate() 方法在后台不使用 MongoDB 的 $lookup。它只是对数据库进行另一个查询。
  2. Mongoose 没有 MongoDB 没有的功能。 populate() 只进行两个或更多查询。

mongoose 中的 populate() 是如何工作的? MongoDB 的 $lookup?

在我看来,有地方可以使用populate(),其他地方可以使用$lookup。对于更复杂的查询 $lookup 在聚合管道中效果最好。

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 2019-06-25
    • 2021-08-25
    • 2019-05-12
    • 2021-03-03
    • 2020-02-10
    • 2019-09-26
    • 2019-10-19
    • 2016-08-06
    相关资源
    最近更新 更多