2014-03-03 47 views
0

我不確定問題標題是否正確。反正我的收藏中的文件看起來是這樣的:在子文檔中通過配對查找

{ 
    properties: [ 
    {name:a, value:w}, 
    {name:b, value:x}, 
    {name:c, value:y}, 
    {name:d, value:z} 
    ] 
} 

我怎麼能找到符合這個條件的文件:「(其中properties.name = A,properties.value = X)和(其中properties.name = C ,properties.value = y)「?

回答

1

請嘗試以下的查詢。需要注意的是,子文檔{名稱:「B」,值:「X」}中的元素的順序事項:

db.foo.find({properties:{$all:[{name:"b", value:"x"}, {name:"c", value:"y"}]}}) 

或者下面的查詢是更好的(沒有按子文件的順序」 t matter):

db.foo.find({properties:{$all:[{$elemMatch:{name:"b", value:"x"}}, {$elemMatch:{name:"c", value:"y"}}]}})