2013-10-22 44 views
0

我有三個文件:

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

我試圖找到所有的文件,其中並有一些給定的值..

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}]})

最可能的是這種語法這是錯誤的,因爲我沒有在這裏提到任何領域。

我如何在使用$來查詢所有這些文件?

這將是,如果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'的工具?

+0

你說的'頂級document'是什麼意思? – CodyBugstein

回答

2

是不是有什麼毛病簡單$or

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

蒙戈$in語法如下:

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

,並在你的情況下,沒有現場使用。

+0

(將在幾分鐘內接受答案:)) 我知道我可以使用$ OR,但$ in更具可讀性。 :) 我只是想確保我不能在(我的首選)使用$,對於上述查詢。 –

+0

我想'$ in'語法是這裏的問題而據我所知是沒有辦法引用當前文檔中的JavaScript功能之外查詢。 – zero323

+0

我在想。謝謝.. –

相關問題