我有两个集合, 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
中的相同键。那有意义吗?基本上能够拥有多个本地/外部字段定义。知道我怎么能这样吗?
最佳答案
从 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/
关于Mongodb $lookup 在多个字段上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46122805/