2012-09-20 94 views
4

我使用的是mongodb 2.2。我想使用新的Aggregation Framework来对我的文档进行查询,但元素是数组。使用Mongo聚合框架对阵列进行组操作

这里我的$项目结果的一个例子:

{ 
    "type" : [ 
     "ads-get-yyy", 
     "ads-get-zzz" 
    ], 
    "count" : [ 
     NumberLong(0), 
     NumberLong(10) 
    ], 
    "latency" : [ 
     0.9790918827056885, 
     0.9790918827056885 
    ] 
} 

我想按类型分组,所以对于“广告-GET-YYY”知道有多少是数平均是多少平均等待时间。

我想有类似一个查询的东西,但是每天都要工作数组的元素里面:

db.test.aggregate(
{ 
    $project : { 
    "type" : 1, 
    "count" : 1, 
    "latency" : 1 
    } 
},{ 
    $group : { 
    _id: {type : "$type"}, 
    count: {$avg: "$count"}, 
    latency: {$avg: "$latency"} 
    } 
}); 

回答

1

我只是学习新的AF太多,但我认为你需要首先$unwind的类型,以便你可以由他们分组。所以像这样:

db.test.aggregate({ 
    $project : { 
    "type" : 1, 
    "count" : 1, 
    "latency" : 1 
    } 
},{ 
    $unwind : "$type" 
},{ 
    $group : { 
    _id: {type : "$type"}, 
    count: {$avg: "$count"}, 
    latency: {$avg: "$latency"} 
    } 
}); 
相关问题