web-dev-qa-db-ja.com

MongoDb集計$ matchエラー:「引数は集計パイプライン演算子である必要があります」

aggregationを使用してサイトのすべての統計情報を取得できますが、$whereなどの特定のユーザーに対して取得したいと思います。

すべての統計:

games.aggregate([{
                $group: {
                    _id: '$id',
                    game_total: { $sum: '$game_amount'}, 
                    game_total_profit: { $sum: '$game_profit'}}
                }]).exec(function ( e, d ) {

                    console.log( d )            

            })

$match演算子を使用しようとすると、エラーが発生します:

games.aggregate([{
                $match: { '$game_user_id' : '12345789' },
                $group: {
                    _id: '$id',
                    game_total: { $sum: '$game_amount'}, 
                    game_total_profit: { $sum: '$game_profit'}}
                }]).exec(function ( e, d ) {

                    console.log( d )            

            })

Arguments must be aggregate pipeline operators

何が足りないのですか?

11
Lazy

パイプラインステージは、アレイ内の個別のBSONドキュメントです。

games.aggregate([
                { $match: { 'game_user_id' : '12345789' } },
                { $group: {
                    _id: '$id',
                    game_total: { $sum: '$game_amount'}, 
                    game_total_profit: { $sum: '$game_profit'}}
                }}
]).exec(function ( e, d ) {
    console.log( d )            
});

したがって、JavaScriptの配列または[]角かっこ表記は、「リスト」が提供されることを期待していることを意味します。これは、通常、{}中括弧を使用してJSON表記で指定される「ドキュメント」のリストを意味します。

24
Neil Lunn