2017-01-13 151 views
1

我有一個文件是這樣的:

{ 
    "values": 
    [ 
     ["a","231"], 
     ["b","232"], 
     ["c","233"], 
     ["a","235"] 
    ] 
} 

如何在價值屬性中使用$ elemMatch。 希望項目價值元素其中的第一個元素是「一」

像這樣

db.test.find({"values" : {$elemMatch: { "matchedElemet"[0]: "a"}}},{"values.$":1}) 
+0

到目前爲止你做了什麼? –

回答

1

你可以使用這樣的事情:

db.test.find({'值':{$ elemMatch:{$ elemMatch:{$中:[' A「]}}}},{ 」值$。「:1})

db.test.find({ },{ '價值':{$ elemMatch:{$ elemMatch:{$中:[ 'A']}}}})

我希望我正確地得到了您的要求,這有助於。

+0

作爲數組的第一個元素是點 如果a在數組中我排在第二位我不想匹配那個 – SajjadRahnama

+0

@SajjadRahnama你可以在應用程序層做一件事嗎?首先僅使用splice過濾第一個值:db.test.find({},{'values':{$ slice:1}});然後使用上面的查詢。這應該解決你的問題,直到你找到一個單一的查詢 –

+0

是更好的解決方案在應用層做到這一點 – SajjadRahnama