首页 > 解决方案 > MongoDB - 如何查询和聚合嵌套文档值

问题描述

我在 mongoDB 集合中有以下3 个Json 文档:

  {
   'title': 'Best',
   'array'  : [
       {'name' :  '1',
        'value':  '2'
       },
       {'name' :  '3',
        'value':  '4'
       }


      ]

}

和 :

   {
   'title': 'Best',
   'array'  : [
       {'name' :  '5',
        'value':  '6'
       },
       {'name' :  '7',
        'value':  '8'
       }
    ]
}

和:

  {
   'title': 'Worst',
   'array'  : [
       {'name' :  'Not_needed',
        'value':  'Not_needed'
       },
       {'name' :  'Not_needed',
        'value':  'Not_needed'
       }
    ]
}

我需要一个给我的查询:

{[
       {'name' :  '1',
        'value':  '2'
       },
       {'name' :  '3',
        'value':  '4'
       },
       {'name' :  '5',
        'value':  '6'
       },
       {'name' :  '7',
        'value':  '8'
       }
 ]}

我怎样才能做到这一点?这就是人们所说的聚合吗?你能给我提供一个 mongoDB 查询吗?

标签: jsonmongodb

解决方案


这是一个使用聚合框架的查询,几乎可以生成您想要的文档。

db.test.aggregate([ 
{ "$unwind": "$array" },
{ "$group": 
    { 
      "_id": "$title", 
      "array": {"$push": "$array"} 
    }
}, 
{ "$project": 
    { 
      "array": 1, 
      "_id": 0 
    } 
}
])

推荐阅读