如何使用mongoose从数组创建查询?

时间:2016-02-10 00:10:58

标签: arrays node.js mongodb mongoose mongodb-query

所以我的这个数组有3个ID:["56ba576f66b9add00e4d3082","56b9252266b9add00e4d3080","56b908f166b9add00e4d307f"]

我想构建一个类似的东西的查询:

userModel.find({ $or: 
  [ 
    {_id:"56ba576f66b9add00e4d3082"}, 
    {_id:"56ba576f66b9add00e4d3082"}, 
    {_id:"56ba576f66b9add00e4d3082"} 
  ]}, 
    {email:true});

是否有某种方法可用于使用数组生成此类查询? 我应该使用mapReduce还是$ where方法或其他任何东西? (我之前没用过那些,所以我不确定是不是这样)

也许我问的是错误的问题?任何建议都非常受欢迎。

2 个答案:

答案 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});