是否可以在mongodb中进行聚合内的简单计算?
db.xy.aggregate(
{ $match: {"$prc": {$gt : 95/100}}},
{ $group: { _id: {ttl: "$ttl", prg : "$prg"}, sth: {$sum: "$tid"}}},
{ $sort:{ sth: -1 }}
);
答案 0 :(得分:2)
是的,您可以,就像上面的95/100
一样,可以计算...请参阅以下类似的控制台输出
查找销售额超过80的文件(使用不必要的计算来说明要点 - 将计算第二项)
> db.mat.aggregate({ $match : { "sales" : { $gt : 800 / 10 }}})
{
"result" : [
{
"_id" : ObjectId("503b58387242f5878fa6577f"),
"brand" : "Alpha",
"sales" : 100,
"period" : "2012-01-01"
},
{
"_id" : ObjectId("503b58497242f5878fa65780"),
"brand" : "Alpha",
"sales" : 90,
"period" : "2012-02-01"
}
],
"ok" : 1
}
将计算应用于返回值,在聚合框架中使用$ project和$ divide ...
> db.mat.aggregate({ $project : { "sales_percentage" : { $divide : ["$sales", 100]}}})
{
"result" : [
{
"_id" : ObjectId("503b58387242f5878fa6577f"),
"sales_percentage" : 1
},
{
"_id" : ObjectId("503b58497242f5878fa65780"),
"sales_percentage" : 0.9
},
{
"_id" : ObjectId("503b58557242f5878fa65781"),
"sales_percentage" : 0.8
}
],
"ok" : 1
}
这是一个完整的示例,您可以保存到文件并通过命令行运行,如C:\MongoDb\mongo < test.js
,以查看您可以将小数表示为0.x或xx / 100,并且两者都有效。
use example;
db.testData.insert({ name : "test row 1", prc : 0.5 });
db.testData.insert({ name : "test row 2", prc : 0.6 });
db.testData.insert({ name : "test row 3", prc : 0.7 });
db.testData.insert({ name : "test row 4", prc : 0.8 });
db.testData.insert({ name : "test row 5", prc : 0.9 });
db.testData.insert({ name : "test row 6", prc : 1.0 });
print("Using 0.6...");
printjson(
db.testData.aggregate({ $match : { "prc" : { $gt : 0.6 } } })
);
print("Using 60/100...");
printjson(
db.testData.aggregate({ $match : { "prc" : { $gt : 60 / 100 } } })
);
答案 1 :(得分:0)
是的,有许多可用的算术运算in documentation