【发布时间】:2023-02-01 01:13:42
【问题描述】:
我是 mongodb 聚合的新手,我无法从集合中提取所有文档作为包含在另一个集合的数组中的字段值。
假设我有一个带有文档的“用户”集合,例如:
{
user: 'foo',
urls: ['/url1', '/url2', '/url3']
}
和另一个集合“菜单”,其中包含以下文件:
{
name: 'bar',
link: '/url1234',
component: 'layout'
}
{
name: 'baz',
link: '/url454',
component: 'layout'
}
上述场景的预期结果是
{
name: 'bar',
link: '/url1234'
}
我正在使用这样的管道,但我一直坚持只取回用户集合中的 url 包含在菜单集合的链接字段中的文档
'$match': {
'user': 'foo'
}
}, {
'$project': {
'urls': 1,
'_id': 0
}
}, {
'$lookup': {
'from': 'menu',
'pipeline': [
{
'$match': {
'component': 'layout'
}
}
],
'as': 'results'
}
}
]
【问题讨论】:
-
users中的urls与menu中的link不匹配。您为什么希望返回文档? -
我不想匹配。我想按子字符串过滤。我可以在后端处理它,但我想知道是否可以在数据库中处理它
标签: mongodb aggregation