我有以下架构:
Collection1
name
slug
Collection2
name
slugCollection1
"链接" Collection1
和Collection2
之间的字段是slug
和slugCollection1
。
我尝试使用MongoDB的聚合框架实现一个请求,以获取Collection1
的所有元素,这些元素具有特定名称和类型为Collection2
的依赖元素的数量。
我可以获得利用$project
的提示:
[
{
"$lookup": {
"from": "Collection2",
"localField": "slug",
"foreignField": "slugCollection1",
"as": "elements"
}
},
{
"$project": {
"_id": 0,
"id": "$id",
"name": 1,
"slug": 1,
"elementsNumber": {
"$size": "$elements"
}
}
}
]
但我稍后无法将elementsNumber
字段用于$match
。我想这是因为它不是Collection1
的字段部分。
有没有办法实现这样的查询? 谢谢!
答案 0 :(得分:2)
您当然可以使用 $match
管道来过滤具有以下标准的文档:
[
{
"$lookup": {
"from": "Collection2",
"localField": "slug",
"foreignField": "slugCollection1",
"as": "elements"
}
},
{
"$project": {
"_id": 0,
"id": "$id",
"name": 1,
"slug": 1,
"elementsNumber": { "$size": "$elements" }
}
},
{ "$match": { "elementsNumber": { "$gt": 3 } } }
]