尝试使用集合关系聚合时出现 MongoError

MongoError when trying to aggregate with collection relationship

我是 mongodb 的新手,使用来自 meanjs.org 的平均堆栈。

我有一个用户集合关系模型:

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 }
    ]
  }
}]...

为什么 user:user 使用查找而不是聚合? 如何固定聚合方法?

试试这个:

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));
});