如何在MongoDB查询中的顶级文档中使用$ in?

时间:2013-10-22 02:16:19

标签: mongodb pymongo mongomapper

我有三份文件:

{ "_id" : ObjectId("5265da546efdfb25e06ea009"), "a" : 1, "b" : 1 }
{ "_id" : ObjectId("5265daadc01c42c8f4974711"), "a" : 2, "b" : 2 }
{ "_id" : ObjectId("5265dab3c01c42c8f4974712"), "a" : 3, "b" : 3 }

我正在尝试查找所有文档,其中a和某些给定值。

e.g.   FIND all  documents 
       WHERE  
               a=123 and b=456
          OR   a=789 and b=888

我试过这个,这不起作用:

  

db.test.find({$中:[{"":2" B":2},{"":1, " b":2}]})

     

很可能这种语法错了,因为我这里没有提到任何字段。

如何使用$ in查询所有这些文件?

如果a和b包含在另一个字段中,例如下面的字段,这将是一个简单的问题:

{ "_id" : ObjectId("5265dbfcc01c42c8f4974713"), "t" : { "a" : 2, "b" : 2 } }
{ "_id" : ObjectId("5265dc02c01c42c8f4974714"), "t" : { "a" : 1, "b" : 1 } }
{ "_id" : ObjectId("5265dc07c01c42c8f4974715"), "t" : { "a" : 3, "b" : 3 } }

 db.test.find({t:{$in:[{"a":1,"b":1},{"a":2,"b":2}]}});
{ "_id" : ObjectId("5265dbfcc01c42c8f4974713"), "t" : { "a" : 2, "b" : 2 } }
{ "_id" : ObjectId("5265dc02c01c42c8f4974714"), "t" : { "a" : 1, "b" : 1 } }

我不确定如何说出来,但也许我正在寻找一种方法将“' $”应用到根级文档中。

我错过了一些明显的东西,或者mongodb没有提供查询' $ in'在根级?

1 个答案:

答案 0 :(得分:2)

简单$or是否有问题?

db.test.find({$or: [{"a": 1, "b": 1}, {"a" :2, "b": 2}]})

Mongo $in语法如下所示:

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

在您的情况下,没有要使用的字段。