平均嵌套值

时间:2016-08-01 12:12:52

标签: mongodb aggregation-framework

我正在寻找一种方法来对该文档中的“嵌套值”进行求和。我对平均用户的孩子数量感兴趣。 这些行给了我0的结果。

db.getCollection('users').aggregate([
   {
$group: {
    _id: "id",
    Mean: {
        $avg: "$data.details.MemberDetails.numberOfKids"
    }
  }
}])

我在stackoverflow中已经读过一些问题,以及我的数据位于一个对象中的问题,该对象位于一个位于对象中的数组中 这就是数据的样子。 任何帮助都会有用。 谢谢。

 /* 1 */
{
>     "_id" : "160b2af1fdf06daf3",
>     "userId" : "943af0fa65da28a4",
>     "data" : {
>         "details" : [ 
>               {
>                 "MemberDetails" : {
>                   
>                         "numberOfKids" : 3,
>                         "Statuse" : "married",
>                 
>                     },
>                     "MemberDescroption" : {
>                         "hight" : 1.80,
>                         "wight" : 85,
>                     }
>                 }
>               ]
>              }
> 
> }

1 个答案:

答案 0 :(得分:2)

在分组文档之前,您需要首先展平数组,使用 $unwind 管道运算符:

db.getCollection('users').aggregate([
    { "$unwind": "$data.details" },
    {
        "$group": {
            "_id": "id",
            "Mean": {
                "$avg": "$data.details.MemberDetails.numberOfKids"
            }
        }
    }
])