2016-02-26 72 views
0

我坚持与一些复杂的查询连接在猫鼬(使用的NodeJS)Moogose复杂的查询连接

我有模型用户

{ 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

User.find()直接不能达到status,请试试这个

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过滤status2填充文档,然后填充后过滤user虽然active_payment

+0

不,它没有为我工作。 –

+0

@ImenAmmar,请尝试我的更新答案。 – zangw