在 Mongoose 中查询多个子文档元素
Posted
技术标签:
【中文标题】在 Mongoose 中查询多个子文档元素【英文标题】:Querying multiple sub-document elements in Mongoose 【发布时间】:2013-03-04 18:04:15 【问题描述】:我似乎无法使以下查询起作用:
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 ANDsubscribers.level = 'owner' 的所有文档
书面查询返回所有子文档,其中subscribers.user = req.user._id 或有一些订阅者级别='所有者'。需要明确的是,我只想要子文档有subscribers.user = req.user._id 并且相同的子文档有subscribers.level = 'owner' 的组。
我已经尝试了各种方式的 $and 和 $elemMatch,但就是无法获得它。感谢您的帮助!
【问题讨论】:
【参考方案1】:$elemMatch
是匹配同一数组元素中的多个字段时的正确运算符;您的查询应如下所示:
Group.find(
$or: [
groupOwner: req.user._id ,
subscribers: $elemMatch: user: req.user._id, level: 'owner'
],
'groupName',
sort: ['groupName', 'ascending'] ,
function(err, groups) ...
【讨论】:
完美,谢谢。我错过了订阅者:在我尝试 $elemMatch 的第 4 行。以上是关于在 Mongoose 中查询多个子文档元素的主要内容,如果未能解决你的问题,请参考以下文章