MongoDb聚合$匹配错误:"参数必须是聚合管道运算符"

Laz*_*azy 10 javascript mongodb node.js mongodb-query aggregation-framework

我可以获得该网站的所有统计数据,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 )            

            })
Run Code Online (Sandbox Code Playgroud)

当我尝试使用$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
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Nei*_*unn 23

管道阶段是阵列中的单独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 )            
});
Run Code Online (Sandbox Code Playgroud)

因此[]JavaScript中的数组或括号表示它需要提供"列表".这意味着一个"文档"列表,通常用带有{}大括号的JSON表示法指定.

  • 我刚刚从 `$game_user_id` 中删除了 `$` 并且它起作用了,我永远不会理解 mongodb .. 无论如何再次感谢。 (2认同)