1
所以我有这样的事情在我的数据库:某些记录之前获得MongoDB中的所有记录的总和
{ "_id" : ObjectId("561c2ca2153678d113d03077"), "title" : "Level 8", "rewardCoins" : NumberLong(25)}
{ "_id" : ObjectId("5615980b153678d113d02d61"), "title" : "Level 9", "rewardCoins" : NumberLong(40)}
{ "_id" : ObjectId("56159796153678d113d02d60"), "title" : "Level 10", "rewardCoins" : NumberLong(55)}
{ "_id" : ObjectId("5613f5ad153678d113d01f4a"), "title" : "Level 11", "rewardCoins" : NumberLong(70)}
所以我想获得在“11级” 这总应该都是rewardCoins的总和是55 + 40 + 25 = 120
我想知道我怎么能得到这与蒙戈壳?
我尝试类似:
db.userlevels.aggregate([
{
$match: {
"title": {$lt: "Level 11"}
},
},
{
$group: {
"_id": {"name": "Level 11"},
"totalAmount": { $sum: "$rewardCoins"}
}
}
])
但我没有得到什么我'期待...... 提示或解决方案将非常感激。谢谢。
你将不会得到准确的结果与字符串比较。如果您可以将数值存储在数字字段中,那么最好使用上述模式,否则您的过滤器查询将起作用,'$ match'管道只会将具有“Level 10”的文档管道传输到下一个管道,因为比较字符串逻辑“(”Level 9“<”Level 10“)是错误的。 – chridam
如果我将它与对象标识(_id)@chridman相匹配,这可以工作吗? – Splendid