【发布时间】:2014-06-03 00:03:43
【问题描述】:
我有一个 MongoDB 集合,其中包含与用户项目相对应的文档并包含以下相关元素:
{
"InstanceId": "Instance1",
"Username": "JohnSmith",
"ProjectTotals":
{
Subtotal: 100.00
TaxTotal: 0.000
}
}
每个实例包含多个用户,每个用户可以拥有多个项目。
我正在尝试获取一些汇总数据,以便向实例经理显示每个用户创建的项目数量以及所有项目的总成本和每个用户的平均项目成本。
到目前为止,我已经构建了以下查询(暂时忽略税收):
db.projects.aggregate(
{$match:
{InstanceId: "Instance1",
ProjectTotals:{"$exists":true} }},
{$group:
{_id: "$Username",
count: { $sum: 1 },
total: { $sum: "ProjectTotals.SubTotal"},
average: {$avg: "ProjectTotals.SubTotal"}}})
这个查询成功地为我提供了每个用户的计数,但每个用户的总数和平均值为 0:
"result" : [
{
"_id" : "JohnSmith",
"count" : 10,
"total" : 0,
"average" : 0
}
]
在不更改我的数据库架构的情况下,如何访问 ProjectTotals.SubTotal 以获取聚合函数?
【问题讨论】:
标签: sql mongodb mongodb-query aggregation-framework