我在mongoose中使用了一些复杂的查询连接(使用nodejs)
我有模型用户
{ active_payment: {type: mongoose.Schema.Types.ObjectId, ref: 'Payment'}}
模特付款:
{status : Number, creation_date: Date}
我想找到状态为2的所有用户。 我试过了:
User.find({'active_payment.status': 2,}).populate('active_payment')
但它不起作用。有没有办法做到这一点,而不必通过for循环排序所有用户? 我还想通过付款的creation_date对用户进行排序。
答案 0 :(得分:0)
您无法直接在status
中找到User.find()
,请尝试使用此
User
.find({})
.populate({
path: 'active_payment',
match: { status: 2},
})
.exec(function(err, users) {
users = users.filter(function(user) {
return user.active_payment; // filter the user by active_payment field
});
});
使用match
过滤status
2
个填充文档,然后在填充user
之后过滤active_payment
。