0
我正嘗試使用基於我的貓鼬模型的聚合。我想根據categoryId彙總金額。但是當試圖通過路由URL訪問時,我得到這個錯誤。 (對於路徑「_id」,投射到ObjectId的值爲「test」失敗)。當與貓鼬聚合時,投射到ObjectId的路徑「_id」上的值「xxx」失敗
在test.js我的貓鼬模型(模型)
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"
}
有什麼建議嗎?
難道是因爲聚合管道需要2個參數'$ match'和'$ group'?我沒有問題,使用貓鼬聚合的東西與'wherecondition'根據這裏給出的例子,他們有一個'wherewheredition –
http://docs.mongodb.org/manual/tutorial/aggregation-zip-code-data-set/ 使用$ group沒有$匹配 – Sanath
這個錯誤是非常「特定於貓鼬」,所以我懷疑你沒有顯示代碼。我認爲你正試圖將聚合結果「投射」到Mongoose對象中。 '.aggregate()'命令本身只返回「普通對象」。這很有意義,因爲「通常」來自聚合的結果對象看起來與原始集合的模型完全不同。 –