如何聚合嵌套文档?

时间:2016-12-28 06:40:48

标签: mongodb nested aggregation-framework

我有一个集合:

$('#ssn').keyup(function() {
    var val = this.value.replace(/\D/g, '');
    var newVal = '';
    while (val.length > 3) {
        newVal += val.substr(0, 3) + '-';
        val = val.substr(3);
    }
    newVal += val;
    this.value = newVal;
});

每个条目都有一个名为 children 的数组。子项中的每个条目都有一个名为 childrenOfChildren 的数组。 childrenOfChildren中的每个条目都有一个名为 price 的属性。我希望在这个整体系列中获得最大的价格。我怎样才能做到这一点?请帮帮我!

2 个答案:

答案 0 :(得分:2)

你可以使用$ unwind和$ group来做到这一点。

db.collection.aggregate([
   {
      $unwind:"$children"
   },
   {
      $unwind:"$children.childrenOfChildren"
   },
   {
      $group:{
         _id:null,
         maxPrice:{
            $max:"$children.childrenOfChildren.price"
         }
      }
   }
])

输出:

{ "_id" : null, "maxPrice" : 110 }

在线试用:mongoplayground.net/p/sBTclni0YSw

答案 1 :(得分:1)

通过aggregate$unwind使用$group查询,您可以从整体收集中获得最高价格。

可以尝试此查询:

db.getCollection('collectionName').aggregate([
 {$unwind: "$children"},
 {$unwind: "$children.childrenOfChildren"},
 {$group:{_id: null, price:{$max: "$children.childrenOfChildren.price"}}}
])