列表中的Mongoose查询条件

时间:2018-04-30 14:04:14

标签: javascript node.js mongodb mongoose

我不确定如何更清楚地说明这个问题的标题:)

所以让我直接跳到架构:

const UserSchema = new Schema({
  name: String,
  _events: [{ type: Schema.Types.ObjectId, ref: "Event" }]
});

基本上,用户可以拥有许多由另一个模型Event引用的事件。事件集合如下所示:

const EventSchema = new Schema({
  _userId: { type: Schema.Types.ObjectId, ref: "User" },
  eventDate: { type: Date, required: true },
  instructions: String,
});

我正在对Mongoose进行查询,列出用户创建的所有事件,如下所示:

  app.get("/api/events/", requireAuth, async (req, res, next) => {
    try {
      const userEvents = await User.findById(req.user._id)
        .populate({
          path: "_events",
          model: "Event",
          })
        .select({ _events: 1 })
        .exec();
      res.send(userEvents);
    } catch (err) {
      next(err);
    }
  });

这完美无缺。但是我有兴趣只列出未来的事件。如何修改查询以执行eventDate>的条件当前日期?

1 个答案:

答案 0 :(得分:2)

您应该在populate函数中查询,如下所示:

下面:

.populate({
  path: "_events",
  model: "Event",
})

添加:

match: { eventDate: { $gte: Date.now() } }