我是mongodb的新手,使用meanjs.org中的Mean stack。
我有一个具有用户集合关系的模型:
var MealSchema = new Schema({
mealDate: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
mongoose.model('Meal', MealSchema);
我找到了一个有效的实现:
var user = req.user;
Meal.find({
mealDate: {
$gte: minus8days.toDate(),
$lt: tomorrow.toDate()
},
user : user
}).exec(function (err, meals) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(meals);
}
});
但我需要一些分组和聚合,所以我试图更改此代码以使用聚合而不是查找,我尝试了很多组合并且我一直收到错误,基本上以下实现会抛出错误MongoError:最大调用堆栈大小超过
Meal.aggregate([
{
$match: {
$and: [
{
mealDate: {
$gte: minus8days.toDate(),
$lt: tomorrow.toDate()
}
}, { user: user }
]
}
}]...
为什么用户:用户使用find而不使用聚合? 如何修复聚合方法?
答案 0 :(得分:1)
试试这个:
Meal.aggregate([
{
$match: {
mealDate: { $gte: minus8days.toDate(), $lt: tomorrow.toDate()},
user: user._id
}
}
], function(err, docs){
if(err) console.log("Error : " + JSON.stringify(err));
if(docs) console.log("Got the docs successfully : " + JSON.stringify(docs));
});