Mongodb $lookup 多个字段

dzm*_*dzm 7 mongodb

我有两个收藏,products并且properties

我正在做一个查找,例如:

[{
        $match: {
            category_id: mongoose.Types.ObjectId(category_id)
        }
    },
    {
        $lookup: {
            from: "properties",
            localField: "category_id",
            foreignField: "category_id",
            as: "properties"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

这基本上让我获得了与category_id 匹配的所有产品,并包括与相同category_id 匹配的属性。

some_id我需要对结果添加额外的检查properties。换句话说,应该按从集合返回并匹配 中相同键的properties进行分组。那有意义吗?基本上能够拥有多个本地/外部字段定义。some_idproductsproperties

知道我怎么能这样吗?

F.H*_*.H. 4

从 3.6 版本开始我们可以使用不相关的子查询

\n
    {\n       $lookup:\n         {\n           from: \'<collection to join>\',\n           let: { <var_1>: \'<expression>\', \xe2\x80\xa6, <var_n>: \'<expression>\' },\n           pipeline: [ \'<pipeline to execute on the collection to join>\' ],\n           as: <output array field>\n         }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

这使我们能够在查找时拥有多个相等匹配。\n另请参阅: https: //docs.mongodb.com/manual/reference/operator/aggregation/lookup/

\n