【问题标题】:Pass data from one $lookup to another将数据从一个 $lookup 传递到另一个
【发布时间】:2021-07-19 05:12:03
【问题描述】:

有一个包含两个 $lookups 的聚合请求:

[{
    $match: {
      id
    }
  },
  {
    $lookup: {      // 1
      from: 'blogs',
      as: 'blog',
      pipeline: [{
        $project: {
          id: 1,      // *           From this
          name: 1,
          articles: 1
        },
      }, {
        $match: {
          articles: {
            $in: [id]
          }
        }
      }, {
        $unset: 'articles'
      }]
    }
  },
  {
    $lookup: {      // 2
      from: 'users',
      as: 'user',
      pipeline: [{
        $project: {
          id: 1,
          user_name: 1,
          picture: 1
        },
      }, {
        $match: {
          blogs: {
            $in: [...]      // To this
          }
        }
      }]
    }
  }
]

如何将字段从第一个转移到第二个(该字段标有*)?

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

【问题讨论】:

    标签: javascript mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    使用let: { "blogIds": "$blog.id" }

    并在管道中使用$$blogIds

    $lookup: {
        from: 'users',
        as: 'user',
        let: { "blogIds": "$blog.id" }
        pipeline: [{ ... }]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-16
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多