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'。我解决了你的答案。 –