我一直得到“错误:参数必须是聚合管道运算符”但我使用mongo shell检查了语句

时间:2015-03-06 15:52:44

标签: node.js mongodb mongoose

try{
    Staff.aggregate(
            {$group:{_id:{name:"$name",age:'$age'},total:{$sum:1}}}, 
            {$match:{total:{$gt:1}}}
    , modelHelper.mergeStaffCallBack);
}catch (err) {
   console.log(err);
}

这是mongoshell中的等效查询。

db.staffs.aggregate([
    {
        $group:{
            _id:{name:"$name",age:'$age'},
            total:{$sum:1}
        }
    },
    {
        $match:{
             total:{ $gt: 1 }
        }
    }
]);

成功执行。我无法在上面的nodejs代码中发现错误。捕获捕获了错误

  

"错误:参数必须是聚合管道运算符"。

有人可以开导我吗?

1 个答案:

答案 0 :(得分:1)

管道阶段是数组中单独的BSON文档:

这是正确的

try{
Staff.aggregate(
        [{$group:{_id:{name:"$name",age:'$age'},total:{$sum:1}}}, 
        {$match:{total:{$gt:1}}}]
, modelHelper.mergeStaffCallBack);
}catch (err) {


console.log(err);}