web-dev-qa-db-ja.com

MongoDBで合計を集計して合計数を取得する方法は?

フィールド{ wins: Number }を持つコレクションの場合、コレクション内のすべてのドキュメントの合計勝ち数を取得するためにMongoDB Aggregation Frameworkを使用するにはどうすればよいですか?

例:

それぞれwins: 5wins: 8wins: 12の3つのドキュメントがある場合、MongoDB Aggregation Frameworkを使用して合計数、つまりtotal: 25を返すにはどうすればよいですか。

55
Sahat Yalkabov

MongoDBの集約フレームワークを使用しているときにグループ化されたフィールドの合計を取得するには、$groupおよび$sumを使用する必要があります。

db.characters.aggregate([ { 
    $group: { 
        _id: null, 
        total: { 
            $sum: "$wins" 
        } 
    } 
} ] )

この場合、すべてのwinsの合計を取得する場合は、$構文を使用してフィールドの名前を$winsとして参照する必要があります。グループ化されたドキュメントのwinsフィールド。それらを合計します。

カウント

(コメントで行ったように)特定の値を渡すことにより、他の値もsumできます。あなたが持っていた場合

{ "$sum" : 1 }

実際には、合計ではなく、すべてのwinsのカウントになります。

130
WiredPrairie