2016-02-26 64 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