这是我的代码:
const events = await Event.find({'isFinished': false})
.where('attendants.employers').in(user._id);
这是模型:
var eventSchema = new mongoose.Schema({
'attendants': {
'seekers': [mongoose.Schema.Types.ObjectId],
'employers': [],
},
'isFinished': {'type': Boolean, 'default': false},
});
我想获取事件,这些事件的用户ID位于其attendants.employers
数组中。我知道我可以在下载所有事件后过滤它们,但这确实效率很低。
当前代码不返回任何值。我尝试像.where(user._id).in('attendants.employers');
那样翻转它。但这导致节点说:
错误:使用这些参数调用时,必须在where()之后使用in()
有什么想法可以实现而无需下载数据并在服务器上进行过滤吗?
答案 0 :(得分:0)
您的find
应该看起来像这样:
Event.find({'isFinished': false, 'attendants.employers': user._id})
您无需执行where
等操作,因为在您的查找中列出了rules
,它们将一起AND-ed
。
您可以使用$in
来查找文档中的字段是否为IN
范围内的值。