MongoDB一个查询有多个OR或多个查询?

时间:2014-02-08 18:42:37

标签: javascript mongodb mongoose

每个用户都有一个手机号码,我想查看我的地址簿中是否还有其他用户。

所以我有1000个数字,我想检查数据库中是否有任何数字,所以我最初的想法是,对于每个数字,我运行一个mongodb查询:

for (var i=0; i < numbers.length; i++) {
  db.users.findOne({phoneNumber: numbers[i]});
}

但是有人建议我这样做:

db.users.find($or: numbers.map(function(number){return {phoneNumber: number}}));
// That would result into a
// db.users.find($or:[{phoneNumber: "123"}, {phoneNumber: "234"}...])

现在是两个相当的?第二种方式更贵吗?

1 个答案:

答案 0 :(得分:4)

使用$in是查找phoneNumber中出现numbers的文档的最简洁方法:

db.users.find({phoneNumber: {$in: numbers}})