我有以下架构:
Collection1
name
slug
Collection2
name
slugCollection1
Collection1
和Collection2
之间的“链接”来自字段slug
和slugCollection1
。
我想创建一个查询,从Collection1
返回带有新计算布尔属性的元素,该属性告诉Collection2
中是否存在(或不存在)依赖元素。
为此,我创建了以下查询:
[
{
"$lookup": {
"from": "Collection2",
"localField": "slug",
"foreignField": "slugCollection1",
"as": "elements"
}
},
{
"$project": {
"_id": 0,
"id": "$id",
"name": 1,
"slug": 1,
"hasElements": {
$gt: [ { $size: '$elements' }, 0 ]
}
}
}
]
当两个集合中有很多元素甚至出现以下错误时,我就遇到了性能问题:
MongoError: Total size of documents in collection2 matching { slug: { $eq: "paymill" } } exceeds maximum document size
还有另一种方法来实现这样的请求吗?谢谢!
答案 0 :(得分:1)
您可以在$ lookup之前添加$ project阶段,这样您只能使用必填字段进行查找
{
"$project": {
"name": 1,
"slug": 1
}
}