Mongoose填充使用或不使用?

时间:2015-07-30 16:25:05

标签: node.js performance mongodb

解释

我在mongoose中有Post Model:

{
    sender: ObjectId, // User Id
    title : String,
    ...
}

我想用他们的用户标题列出我的帖子。 我有两个选择:

1-列表帖子>提取唯一发件人>查询用户标题>在结果中用标题替换ID

  

列出Post的一个查询和列出唯一User

的一个查询

2-在架构中使用mongoose populate方法:sender: {type:ObjectId, ref: User}, 并在结果中使用sender的新填充值,例如:sender.title

  

基于mongoose填充值如何具有不同数量的查询

问:

当mongoose填充'发件人'财产,它做什么? 因为我需要为我的项目使用最好的选项(并且可读)!

1-为每个Id使用新查询

  

要列出1000帖子,我们有1001个查询!即使我们有重复用户!!

2-或对每个唯一ID使用查询

  

从100个用户列出1000个帖子我们有101个查询!

3-甚至更好地列出唯一的用户ID并一起查询(如选择一个)

  

我们只有2个查询!! (尽可能最好)

1 个答案:

答案 0 :(得分:0)

选项3 - Mongoose将获取帖子,然后使用$ in运算符查询用户一次。

即使在这样做之后,手动执行它的性能总是会更好,因为mongoose会在完成两个查询所需的一段时间内阻塞事件发射器,而你的代码会在更短的时间内阻止它,更好的性能。您可以使用blocked进行基准测试