【发布时间】:2015-03-08 19:32:47
【问题描述】:
我在 mongodb 中有一个集合,其条目格式为:
{
"_id":ObjectId("54fb1dec44ae41b348e22545"),
"dateLog": ISODate("2015-03-07T16:00:00 Z"),
"totalHours":0,
"projects":[
{
"client":"BB",
"name":"Training",
"component":"ElasticSearch",
"region":"test",
"hours":1
},
{
"client":"PAC",
"name":"TSO",
"component":"feature1",
"region":"a",
"hours":2
},
{
"client":"PAC",
"name":"TSO",
"component":"feature1",
"region":"b",
"hours":2
}
],
"userName":"guest"
}
我想执行一个聚合查询并计算上面所有条目的 projects.client、projects.name 和 projects.component 的数量。 到目前为止,我的聚合查询类似于:
db.worklog.aggregate(
{
$match:{
userName:"guest"
}
},
{
$project:{
"projects.client":1,
"projects.name":1,
"projects.component":1
}
},
{
$group:{
_id:"$projects.client",
sum:{
$sum:"$projects.client"
}
}
}
)
但结果是{ "_id" : [ "BB", "PAC", "PAC" ], "sum" : 0 }
我想算的是:
{ "_id" : { "projects.component" : "ElasticSearch", "projects.client" : "BB" , "projects.name" : "Training"} , "count" : 1}
{ "_id" : { "projects.component" : "feature1", "projects.client" : "PAC" , "projects.name" : "TSO"} , "count" : 1}
正确的查询是什么?
【问题讨论】:
标签: mongodb