so have in database:
{ "_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)}
so sum of rewardcoins under "level 11" total should 55+40+25 = 120
i'm wondering how can mongo shell ?
i trying like:
db.userlevels.aggregate([ { $match: { "title": {$lt: "level 11"} }, }, { $group: { "_id": {"name": "level 11"}, "totalamount": { $sum: "$rewardcoins"} } } ])
but i'm not getting i'am expecting... hint or solution appreciated. thanks.
consider introducing additional numeric field store level:
{ "_id" : objectid("561c2ca2153678d113d03077"), "title" : "level 8", "rewardcoins" : numberlong(25), level: 8} { "_id" : objectid("5615980b153678d113d02d61"), "title" : "level 9", "rewardcoins" : numberlong(40), level: 9} { "_id" : objectid("56159796153678d113d02d60"), "title" : "level 10", "rewardcoins" : numberlong(55), level: 10} { "_id" : objectid("5613f5ad153678d113d01f4a"), "title" : "level 11", "rewardcoins" : numberlong(70), level: 11}
having part of title , comparing strings bit strange. aggregation query should job:
db.userlevels.aggregate([{$match: {"level": {$lt: 11}}}, {$group: {"_id": null, "totalamount": { $sum: "$rewardcoins"}}}])
Comments
Post a Comment