【发布时间】:2013-07-03 04:29:45
【问题描述】:
我正在使用 mongodb 聚合框架并进行如下所示的一些计算
db.RptAgg.aggregate(
{$group: {
_id: {Region: "$RegionTxt", Mth: "$Month"},
ActSls: {$sum:"$ActSls"},
PlnSls: {$sum:"$PlnSls"}
}},
{$project: {
ActSls: 1,
PlnSls: 1,
ActToPln: {$cond: [
{$ne: ["$PlnSls", 0]},
{$multiply: [{$divide: ['$ActSls', '$PlnSls']}, 100]},
0
]}
}}
);
我正在尝试找出将我的结果四舍五入到小数点后 2 位的最佳和最简单的方法。以下是我的结果
{
"result": [{
"_id": {
"Region": "East",
"Mth": 201301
},
"ActSls": 72,
"PlnSls": 102,
"ActToPln": 70.58823529411765
}],
"ok": 1
}
我希望 "ActToPln" 在聚合框架本身的结果中显示 70.59 而不是 "ActToPln" : 70.58823529411765。我想避免在我的应用程序中进行舍入
你能帮忙吗?
以下是我使用的数据集。
{
"_id" : ObjectId("51d67ef69557c507cb172572"),
"RegionTxt" : "East",
"Month" : 201301,
"Date" : "2013-01-01",
"ActSls" : 31,
"PlnSls" : 51
}
{
"_id" : ObjectId("51d67ef69557c507cb172573"),
"RegionTxt" : "East",
"Month" : 201301,
"Date" : "2013-01-02",
"ActSls" : 41,
"PlnSls" : 51
}
提前致谢。 南都
【问题讨论】:
-
您应该提供一些示例或数据并简化您的问题
-
我已经更新了问题并提供了我使用的数据集。谢谢amezhenin。
-
为什么不在客户端做呢?在聚合框架中没有一种自然的方法可以做到这一点。您需要使用 map reduce 来执行舍入功能。
标签: mongodb aggregation-framework rounding