当与mongoose聚合时,转换为ObjectId在路径“_id”处的值“xxx”失败

时间:2015-08-14 01:55:56

标签: javascript node.js mongodb mongoose aggregation-framework

我正在尝试使用基于我的猫鼬模型的聚合。我想根据categoryId汇总金额。但是当尝试通过路由url访问时,我收到此错误。 (对于路径“_id”处的值“test”,转换为ObjectId失败。)

我的mongoose模型在test.js(MODEL)

var ObjectId = Schema.ObjectId;

var test = new Schema({
    //testId:ObjectId,
    testName: String,
    amount:Number,
    categoryId:String
});
module.exports = mongoose.model('test', test);

我的控制器testController -

var Test = require('../models/test');
function aggTest(req,res){
    Test.aggregate([{
        $group:{
            _id:"$categoryId",
            totalAmount:{$sum: "$amount"}
        }
    }],function(err,result){
        console.log(result);
    });
}

路线映射

router.get('/test',testController.aggTest);

错误 -

{
  message: "Cast to ObjectId failed for value "test" at path "_id""
  name: "CastError"
  type: "ObjectId"
  value: "test"
  path: "_id"
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我的答案中有2个问题。感谢Blake Seven指出我正确的方向。我没有正确的返回来返回响应,我的回调函数不正确。 更正的代码在这里。

pager.setOnPageChangeListener(pagelistener)