Mongodb并搜索嵌套元素

时间:2016-02-18 08:43:46

标签: mongodb

有一个这样的文档集:

{
   "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

我将非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

请尝试使用.aggregate()运营商通过$redact进行此操作。

使用$filter运算符来过滤object.a的值1,然后将过滤结果的大小与2$eq和{{ 1}}。最后,通过$size输出结果。

$redact