MongoDB $lookup 创建数组
MongoDB $lookup creates array
所以我正在尝试将两个集合连接在一起:
集合是:
- 显示
- 集数
我正在使用节目集合中的 $lookup 值。
[{$lookup: {
from: 'episode',
localField: 'url',
foreignField: 'show_b',
as: 'match_docs'
}}]
不过,我从 match_docs 中的每个节目中获取所有剧集,理论上这很好,但是我需要能够将其限制为每个节目的最新一集 limit:1
按 pubDate
排序
如果有人知道如何将 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'
}
}
]
所以我正在尝试将两个集合连接在一起:
集合是:
- 显示
- 集数
我正在使用节目集合中的 $lookup 值。
[{$lookup: {
from: 'episode',
localField: 'url',
foreignField: 'show_b',
as: 'match_docs'
}}]
不过,我从 match_docs 中的每个节目中获取所有剧集,理论上这很好,但是我需要能够将其限制为每个节目的最新一集 limit:1
按 pubDate
如果有人知道如何将 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'
}
}
]