关于mongoose的where子句填充

时间:2015-10-29 22:02:46

标签: javascript node.js mongodb mongoose

Node.js应用中,我使用此代码来获取一些数据:

Users.find({user_enabled:true}).populate('books')...

但是现在我有一个问题。我只想要用户使用英语书籍。

现在我正在这样做:为他们取得所有用户和所有书籍。然后在循环中,我可以检查每种书籍语言..这不是一个好的解决方案。我需要像SQL中的Where子句。如果用户没有英语书籍,我在结果中不需要该用户。 Mongodb / mongoose无法做到这一点? j在获取所有结果后必须使用代码吗?

我需要这样的东西:

Users.find({user_enabled:true}).populate('books').where({'books.language':'en'})

1 个答案:

答案 0 :(得分:2)

你可以用匹配来做到这一点:

Users
  .find({ user_enabled: true })
  .populate({
    path: 'books',
    match: { 'language': 'en' },
  })
  .exec()

有关详细信息,请查看http://mongoosejs.com/docs/populate.html