【问题标题】:Querying multiple sub-document elements in Mongoose在 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,但就是无法获得它。感谢您的帮助!

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案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 行。
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 2020-07-16
    • 2015-04-27
    • 2017-10-01
    • 2021-02-21
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多