是否可以在 mongodb 的聚合中进行简单的计算?
db.xy.aggregate(
{ $match: {"$prc": {$gt : 95/100}}},
{ $group: { _id: {ttl: "$ttl", prg : "$prg"}, sth: {$sum: "$tid"}}},
{ $sort:{ sth: -1 }}
);
是否可以在 mongodb 的聚合中进行简单的计算?
db.xy.aggregate(
{ $match: {"$prc": {$gt : 95/100}}},
{ $group: { _id: {ttl: "$ttl", prg : "$prg"}, sth: {$sum: "$tid"}}},
{ $sort:{ sth: -1 }}
);
是的,你可以,就像你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 } } })
);
是的,文档中有许多可用的算术运算