Lau*_*yts 2 javascript mongoose mongodb node.js mongodb-query
我正试图找到一种方法来使自己成为可能的代码,以便使用多个复杂的查询.
我在MongoDB中有2个文档.第一个是追随者,第二个是事件.
第一个查询:获取特定用户的所有关注者.第二个查询:获取所有关注者的所有事件,并按日期对其进行排序.
我不知道如何进行第二次查询.
也许是这样的:
Event.find({ "$or" : [
{
'userId': followers[0].id,
},
{
'userId': followers[1].id,
},
{
'userId': followers[2].id,
},
]});
Run Code Online (Sandbox Code Playgroud)
但这对我来说并不是一个非常干净的代码.
我认为你需要的是$in操作员.的$in操作者只需要一个指数而$or操作者需要更多的(每个子句之一).该文件还明确指出:
当使用$或对同一字段的值进行等式检查时,请使用$ in运算符而不是$或运算符.
您可以按如下方式修改查询:
var userIds = [followers[0].id, followers[1].id, followers[2].id];
Event.find({ 'userId': { $in: userIds } }, function(err, result){ ... });
Run Code Online (Sandbox Code Playgroud)
或者正如Neil Lunn所建议的那样,另一种解决方法是使用本机映射方法生成所需用户ID的数组:
Event.find({
"userId": {
"$in": followers.map(function (follower){
return follower.id
}))
}
}, function(err, result){ ... });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |