所以我的这个数组有3个ID:["56ba576f66b9add00e4d3082","56b9252266b9add00e4d3080","56b908f166b9add00e4d307f"]
我想构建一个类似的东西的查询:
userModel.find({ $or:
[
{_id:"56ba576f66b9add00e4d3082"},
{_id:"56ba576f66b9add00e4d3082"},
{_id:"56ba576f66b9add00e4d3082"}
]},
{email:true});
是否有某种方法可用于使用数组生成此类查询? 我应该使用mapReduce还是$ where方法或其他任何东西? (我之前没用过那些,所以我不确定是不是这样)
也许我问的是错误的问题?任何建议都非常受欢迎。
答案 0 :(得分:2)
如果您只有一个元素,那么只需使用$in
:
var array = [
"56ba576f66b9add00e4d3082",
"56b9252266b9add00e4d3080",
"56b908f166b9add00e4d307f"
];
userModel.find({ "_id": { "$in": array } }, { "email": true });
$in
条件基本上是$or
应用于同一字段。
答案 1 :(得分:0)
尝试使用map功能:
array = ["56ba576f66b9add00e4d3082","56b9252266b9add00e4d3080","56b908f166b9add00e4d307f"]
userModel.find({ $or: array.map(function(id) {
return {_id: id};
})}, {email:true});