0

我有三个文件:

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

我正在尝试查找所有文档,其中 a 和 be 有一些给定的值..

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

我已经尝试过了,但这不起作用:

db.test.find({$in:[{"a":2,"b":2},{"a":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 } }

我不知道如何措辞,但也许我正在寻找一种将“$in”应用于根级文档的方法..

我是否遗漏了一些明显的东西,或者 mongodb 没有提供在根级别查询 '$in' 的工具?

4

1 回答 1

2

简单有什么问题$or吗?

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

Mongo$in语法如下所示:

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

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

于 2013-10-22T02:22:20.067 回答