2014-07-01 285 views
2

如何查詢此嵌套json結構以查找包含「A」的文檔?mongodb查詢嵌套結構

"categories":[{"id":12,"values":[["A","B","C"]]},{"id":17,"values":[["D","E","F"]]}] 

到目前爲止,我只設法獲得的id值與

db.coll.find({categories: { $elemMatch: { id: 12 }}}) 

回答

2

您需要嵌套$elemMatch運營商,以配合您的陣列的嵌套層次的元素相匹配:

db.coll.find({ 
    "categories": { 
     "$elemMatch": { 
      "values": { 
       "$elemMatch": { 
        "$elemMatch": { "$in": ["A"] } 
       } 
      } 
     } 
    } 
}) 
+0

@Blitz你還是可以接受的,至少讓答案的人都知道,在一眼就知道你的問題已經解決了。 –

1

儘管尼爾的答案會起作用,但只能用兩個$elemMatch運營商來完成,而不是三個它更簡單。

您可以使用dot notation去的values屬性,然後你可以使用嵌套$elemMatch運營商檢查嵌套數組值:

db.coll.find({ 
    "categories.values" : { 
     $elemMatch : { 
      $elemMatch : { $in : ["A", "B"] } 
     } 
    } 
}); 
+0

謝謝,這是很好的知道和工作。 – Blitz