Javascript MongoDb聚合$match错误:";参数必须是聚合管道运算符“;

Javascript MongoDb聚合$match错误:";参数必须是聚合管道运算符“;,javascript,node.js,mongodb,mongodb-query,aggregation-framework,Javascript,Node.js,Mongodb,Mongodb Query,Aggregation Framework,我可以通过聚合获取站点的所有统计信息,但我想为某个用户获取这些信息,比如$where 所有统计数据: games.aggregate([{ $group: { _id: '$id', game_total: { $sum: '$game_amount'}, game_total_profit: { $sum: '$game_profit'}}

我可以通过
聚合
获取站点的所有统计信息,但我想为某个用户获取这些信息,比如
$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

我缺少什么?

管道阶段是阵列中单独的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表示法指定,并带有大括号。

另一个可能的原因是使用了不兼容的mongodb版本和mongoose版本

就我而言

mongodb版本: MongoDB外壳版本3.6.18

猫鼬版本: “猫鼬”:“^5.1.3”

请查找兼容版本的列表


确保在数组中用as obj或{}分隔管道阶段。所以$match和$group必须位于对象内部。

谢谢。但是当我查询用户时,我只得到
[]
。(当我删除
$match
的内容时,它正在工作(提供所有统计数据)。)我刚刚从
$game\u user\u id
中删除了
$
,它工作了,我永远不会理解mongodb。。无论如何,再次谢谢你。
 const stats = await Tour.aggregate([
 
    {
        $match: { ratingsAvarage: { $gte: 4.5 } }
    }, 
    {    
        $group: { 
        _id: null,
        avgRating: { $avg: '$ratingsAvarage' }
                   
         }
    }]