Get sum of all the records before certain record in mongodb -


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