【发布时间】:2013-12-18 21:21:58
【问题描述】:
我在 Mongo 数据库中有大量文档,其结构如下:
{
"_id" : {
"birthDate" : "1978-08-09",
"name" : "Peter"
},
"value" : {
"types" : {
"euro" : 90,
"unknown" : 2,
"dollar" : 3
}
}
}
并非所有文档都包含所有类型(即:其中一些只有 euro 或没有 unknown 字段)。
我想用聚合框架来统计每个type 的出现次数。
我有这个:
db.collection.aggregate({$match: {_id : {name:"John"}}}, {$group: {_id: '', euro: {$sum: '$value.types.euro'}, dollar: {$sum: '$value.types.dollar'}, unknown: {$sum: '$value.types.unknown'}}})
但它正在返回:
{ "result" : [ ], "ok" : 1 }
我的问题是:如何使用 Mongo 的聚合框架计算每个 coin 的 type 以获取特定的 name?是否也可以获取表单中每个名称的列表:
"result" : [
{
"name" : "Peter",
"dollar" : 1,
"euro" : 12,
"unknown" : 4
}
]
"result" : [
{
"name" : "John",
"dollar" : 4,
"euro" : 10,
"unknown" : 3
}
]
我正在使用带有 Java 驱动程序的 MongoDB,所以如果答案是 Java 代码,那将是完美的。
【问题讨论】:
标签: mongodb aggregation-framework