我有以下架构:
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
的字段部分。有没有实现这种查询的方法?
谢谢!
最佳答案
当然,您可以使用$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 } } }
]