如何在mongo查询中进行OR搜索?

时间:2013-05-05 01:03:16

标签: mongodb

我想像这样运行一个查询:

  

db.sent.find({trigger_id:ObjectId(“516f029ac5f4810002000007”),created_at:{$ gte:ISODate(“2013-04-01T00:00:00.000Z”),$ lt:ISODate(“2013-05 -01T00:00:00.000Z“)}})计数()

但是在ObjectID(“516f029ac5f4810002000007”)的位置,我希望它是多个不同的值,并且mongo可以提取与任何值匹配的记录。

我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用MongoDB $in运算符:

db.sent.find({
    trigger_id: { 
         $in: [
             ObjectId("516f029ac5f4810002000007"),
             ObjectId("516f029ac5f4810002000008"),
             ObjectId("516f029ac5f4810002000009"),
         ]
    }, 
    created_at: {
         $gte: ISODate("2013-04-01T00:00:00.000Z"), 
         $lt: ISODate("2013-05-01T00:00:00.000Z")
    }
}).count()

答案 1 :(得分:0)

您可以使用$ in运算符:

db.sent.find( { trigger_id: { $in: [ <value1>, <value2>, ... <valueN> ] },
                created_at: {$gte: ISODate("2013-04-01T00:00:00.000Z"), $lt: ISODate("2013-05-01T00:00:00.000Z") } } ).count() 

以下是有关$ in运算符的更多信息

http://docs.mongodb.org/manual/reference/operator/in/#op._S_in