我在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个查询!! (尽可能最好)
答案 0 :(得分:0)
选项3 - Mongoose将获取帖子,然后使用$ in运算符查询用户一次。
即使在这样做之后,手动执行它的性能总是会更好,因为mongoose会在完成两个查询所需的一段时间内阻塞事件发射器,而你的代码会在更短的时间内阻止它,更好的性能。您可以使用blocked进行基准测试