首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用`$elemMatch`‘中的另一个子文档字段

引用`$elemMatch`‘中的另一个子文档字段
EN

Stack Overflow用户
提问于 2022-04-10 14:14:03
回答 1查看 94关注 0票数 1

我试图在一个$elemMatch聚合阶段执行一个$match,在这个阶段,我希望在一个子文档数组(commitments)中找到一个文档,该数组的属性tracksThisWeek小于其frequency属性,但我不知道如何引用该子文档的另一个字段,我想出了如下结论:

代码语言:javascript
复制
{
    $match: {
        commitments: {
            $elemMatch: {
                tracksThisWeek: {
                    $lt: '$frequency',
                },
            },
        },
    },
},

我在集合中有一个文档,它应该从这个聚合返回,但不是,任何帮助都很感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-10 17:19:02

这是不可能的,您不能引用查询语言中的任何字段,您可以做的是在聚合运算符中使用$expr,如下所示:

代码语言:javascript
复制
db.collection.aggregate([
  {
    $match: {
      $expr: {
        $gt: [
          {
            $size: {
              $filter: {
                input: "$commitments",
                cond: {
                  $lt: [
                    "$$this.tracksThisWeek",
                    "$$this.frequency"
                  ]
                }
              }
            }
          },
          0
        ]
      }
    }
  }
])

蒙戈游乐场

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71817399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档