在聚合查询中具有条件的Mongodb $ lookup

Morteza

我有一个article_parent这样的文档集合

    { "name": "name1", "group": 1 }
    { "name": "name2", "group": 1 }
    { "name": "name3", "group": 2 }
    { "name": "name4", "group": 3 }
    { "name": "name5", "group": 2 }

我还有另一个收藏集,叫它article存储我所有的帖子

    {"parent_name": "name1", "value": "val1"}
    {"parent_name": "name2", "value": "val2"}
    {"parent_name": "name3", "value": "val3"}
    {"parent_name": "name4", "value": "val4"}
    {"parent_name": "name5", "value": "val5"}

我想得到所有这样article_parent.group的2篇文章

    {"parent_name": "name3", "value": "val3", parent: { "name": "name3", "group": 2 }}
    {"parent_name": "name5", "value": "val5", parent: { "name": "name5", "group": 2 }}

我有这个查询:

db.article.aggregate([{
    $lookup: {
        from: "article_parent",
        let: {
            name: "$parent_name"
        },
        pipeline: [
            { $match: { group: 2 } }
         ],
        as: "parent"}}
    ])

但查询找不到任何文章

我的查询错在哪里?

我能做什么?

谢谢

当然

您尝试过的内容将不胜感激。您尝试使用uncorrelated-sub-queries因此,当您在内部定义的管道中使用变量时let,需要使用$ expr您所做的问题是,您没有通过一个特定字段将两个集合都加入。

[
  {
    $lookup: {
      from: "article_parent",
      let: {
        pname: "$parent_name"
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $eq: [
                "$name",
                "$$pname"
              ]
            },
            group: 2
          }
        }
      ],
      as: "parent"
    }
  },
  {
    $match: {
      parent: {
        $ne: []
      }
    }
  }
]

工作蒙戈游乐场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章