在Mongoose中查询多个子文档元素

我似乎无法得到以下查询工作:

Group.find({ $or: [ {'groupOwner': req.user._id }, { 'subscribers.user': req.user._id, 'subscribers.level': 'owner' } ] }, 'groupName', { sort: ['groupName', 'ascending'] }, function(err, groups) { 

我的模式有一个组,订户作为子文档数组。 我想查找groupOwner与传递的用户ID(工作正常)匹配的所有组,以及其中subscribers.user = req.user._id AND subscribers.level ='owner'

所写的查询返回所有的subdocuments,其中subscribers.user = req.user._id或者有一些订户level ='owner'。 要清楚的是,我只想要子文档有subscribers的用户.user = req.user._id和相同的子文档有subscribers.level ='所有者'。

我已经尝试了$和$ elemMatch的所有方式,只是无法得到它。 谢谢你的帮助!

$elemMatch是匹配相同数组元素中的多个字段的正确运算符; 你的查询应该是这样的:

 Group.find( { $or: [ { groupOwner: req.user._id }, { subscribers: { $elemMatch: { user: req.user._id, level: 'owner' }}} ]}, 'groupName', { sort: ['groupName', 'ascending'] }, function(err, groups) { ...