我有两个集合,products
和properties
。
我正在进行查询,例如:
[{
$match: {
category_id: mongoose.Types.ObjectId(category_id)
}
},
{
$lookup: {
from: "properties",
localField: "category_id",
foreignField: "category_id",
as: "properties"
}
}
]
这基本上是让我获得与category_id匹配的所有产品,包括与相同category_id匹配的属性。
我需要在some_id
结果上为properties
添加额外的检查。换句话说,properties
应按some_id
集合中返回的products
进行分组,并与properties
中的相同密钥匹配。那有意义吗?基本上具有多个本地/外部字段定义的能力。
任何想法我怎么能这样?
答案 0 :(得分:0)
从3.6版开始,我们可以使用不相关的子查询
{
$lookup:
{
from: <collection to join>,
let: { <var_1>: <expression>, …, <var_n>: <expression> },
pipeline: [ <pipeline to execute on the collection to join> ],
as: <output array field>
}
}
这使我们在查找中可以具有多个同等匹配项。 另请参阅:https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/