Moogose复杂查询加入

时间:2016-02-26 09:20:56

标签: node.js mongodb sorting join mongoose

我在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对用户进行排序。

1 个答案:

答案 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