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
私はどのようにmongoシェルでこれを得ることができますか?
私が何かしようとしていた:
db.userlevels.aggregate([
{
$match: {
"title": {$lt: "Level 11"}
},
},
{
$group: {
"_id": {"name": "Level 11"},
"totalAmount": { $sum: "$rewardCoins"}
}
}
])
をしかし、私は ヒントや解決策が本当にいただければ幸いです... I'amは期待して何を得ていませんよ。ありがとう。
文字列比較では正確な結果が得られません。あなたのレベルを数値フィールドに格納して、上記のスキーマでフィルタクエリが動作するのであれば、 '$ match'パイプラインは' 'Level 10 ''を持つ文書を次のパイプラインにパイプするだけです文字列論理( "レベル9" <"レベル10")は偽です。 – chridam
これはオブジェクトID(_id)@chridmanと一致させるとこれを実行できますか? – Splendid