MongoDB $lookup 创建数组

MongoDB $lookup creates array

所以我正在尝试将两个集合连接在一起:

集合是:

  1. 显示
  2. 集数

我正在使用节目集合中的 $lookup 值。

[{$lookup: {
  from: 'episode',
  localField: 'url',
  foreignField: 'show_b',
  as: 'match_docs'
}}]

不过,我从 match_docs 中的每个节目中获取所有剧集,理论上这很好,但是我需要能够将其限制为每个节目的最新一集 limit:1pubDate

排序

如果有人知道如何将 match_docs 限制为仅查找一次,那就太好了

我也试过了

{
  from: 'episode',
  localField: 'url',
  foreignField: 'show_b',
  pipeline: [
              {$sort:{id:1}},{$limit:1},
              ],
  as: 'match_docs'
}

没有成功。

使用 $lookup 的第二种语法就很容易了:

[
    {
        $lookup: {
            from: 'episodes', # make sure your collection name is correct
            let: {url: '$url'},
            pipeline: [
                {
                    $match: {
                        $expr: {
                            $eq: ['$show_b', '$$url']
                        }
                    }
                },
                {
                     $sort: {
                        pubDate: -1
                    }
                },
                {
                    $limit: 1
                } 
            ],
            as: 'match_docs'
        }
    }
]