有一个这样的文档集:
{
"objects": [
{
"a": 1,
"prop":2,
},
{
"a": 2,
"prop":3
}
]
}
有一项任务是查找具有相同属性的子文档的文档。假设需要找到一个包含两个嵌套文档的文档,其中包含属性和== 1 我建立了一个条件:
{
"objects": { "$elemMatch": { "$and": [ {"a":1}, { "a":1} ]} }
}
或
{
'objects': { $elemMatch: {'a': 1}, $size: 2 }
}
此查询将按预期返回一个文档,其中有任何子文档,其属性为'a'= 1和'a'= 2,'a'= x等。以下是如何发出请求他只给了我那些文件,其中有两个子文件,其属性为a = 1。 理想情况下,它应该只返回这种类型的文档:
{
"objects": [
{
"a": 1,
"prop":5
},
{
"a": 1,
"prop":6
}
]
}
应该返回具有两个嵌套子数组的文档,其属性为“a”= 1
我将非常感谢任何帮助
答案 0 :(得分:0)
请尝试使用.aggregate()
运营商通过$redact
进行此操作。
使用$filter
运算符来过滤object.a
的值1
,然后将过滤结果的大小与2
到$eq
和{{ 1}}。最后,通过$size
输出结果。
$redact