【发布时间】:2016-03-03 14:59:42
【问题描述】:
我正在尝试在填充相应对象后查询引用数组。我有一种感觉,我要么没有使用正确的操作 $...,要么我的方法不是解决我需要做的事情的正确方法。
我将举一个例子来明确我想要做什么。假设我有一组用户,他们可以有多个与之关联的预订文档。我需要找到所有居住在某个位置并且至少有一个开始日期在今天之前的预订的所有用户。
模型大致如下:
var Booking = new mongoose.Schema({
starts_at: { type: Date },
ends_at: { type: Date },
//...
});
var User = new mongoose.Schema({
name: String,
location: String,
bookings: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Booking' }],
//...
});
我正在尝试的代码/查询如下:
User.find({ 'location': 'some place' })
.populate('bookings')
.where({ 'bookings.starts_at': { $lte: new Date() } })
.exec(function(err, users) {
//...
});
任何帮助或见解都会很棒
【问题讨论】:
-
非常相似,但是那里的方法会给我一个匹配的预订数组,因为我需要用户作为结果来使用
-
此外,Bookings 不包含反向引用 - 该引用是对(用户)执行初始/首次查询的同一模型的一部分,因此该方法很遗憾不起作用:(