1
我有一個包含文檔的集合。每個文檔都有一個part
屬性,其中包含一個哈希數組(文檔)。這些文檔可能有也可能沒有_encwas
屬性。搜索記錄,其中陣列中的一個項目包含屬性
{
_id : "00001",
parts : [
{ _encwas: 1, body: "" },
{ body: "" }
]
},
{
_id : "00002",
parts : [
{ _encwas: 1, body: "" },
{ _encwas: 2, body: "" }
]
},
{
_id : "00003",
parts : [
{ body: "" },
{ body: "" }
]
}
是否有一個快速的方法來發現其中至少有一個部分包含_encwas
屬性的所有記錄?
下面的查詢工作
db.collection.find({ "parts.0._encwas" : { $exists : true } });
,但我很想找到一種方法與any part
更換0
。例如
db.collection.find({ "parts.*._encwas" : { $exists : true } });
查詢應儘可能高效(如果我需要創建額外的索引我不介意),因爲我需要遍歷超過1M記錄的詳細。
+1。是的,這就是多值(數組)字段應該如何工作。 – Thilo
它似乎沒有工作。它返回所有包含部分的記錄,不管它們是否包含'_encwas'。 –
好吧,我發現了這個問題。它應該是'$ exists:true'。我解決了你的答案。 –