我不确定如何更清楚地说明这个问题的标题:)
所以让我直接跳到架构:
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
>的条件当前日期?
答案 0 :(得分:2)
您应该在populate函数中查询,如下所示:
下面:
.populate({
path: "_events",
model: "Event",
})
添加:
match: { eventDate: { $gte: Date.now() } }