4

我正在使用 mongodb 2.2。我想使用新的聚合框架对我的文档进行查询,但元素是数组。

这是我的 $project 结果的示例:

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

我想按类型分组,因此“ads-get-yyy”要知道计数的平均值是多少,延迟的平均值是多少。

我想要类似于下一个查询的东西,但它适用于每个数组的元素:

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

1 回答 1

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"}
  }
});
于 2012-09-20T13:12:27.983 回答