MongoDB-将2个集合连接在一起以匹配子元素

时间:2020-07-12 20:28:25

标签: mongodb mongodb-query

我正在努力使用Mongo DB创建一个查询,该查询将2个集合结合在一起以匹配子元素。

最终,我正在尝试查找与_id中的collection_Apo_data.vendor._id中的collection_C匹配的所有记录。要查找记录,您首先必须加入collection_B

如何将_id中的collection_A匹配到`collection_C中的po_data.vendor._id的所有记录。

查询在collection_A中查找,并返回如下记录:

{
    "_id" : ObjectId("5e80f762189577230c65d3cb"),

}

我要加入的第一条记录是-collection_B

{
    "_id" : ObjectId("5efd0984be81418cc59f3ff9"),
    "activeRecord" : ObjectId("5efd0984be81418cc59f3ff8"),
    "revisions" : [ 
        ObjectId("5efd0984be81418cc59f3ff8")
    ]
} 

其加入的记录是-collection_C

{
    "_id" : ObjectId("5efd0984be81418cc59f3ffa"),
    "revision_uLID" : ObjectId("5efd0984be81418cc59f3ff8"),
    "parentRecord_uLID" : ObjectId("5efd0984be81418cc59f3ff9"),
    "po_data" : {
        "vendor" : {
            "_id" : "5e80f762189577230c65d3cb",
        }
}

activeRecordrevision_uLID这两个名称相互结合。

到目前为止,我已经尝试了以下方法,但是似乎无法使其正常工作。

const result = await findr.aggregate(
        [
            {
                $lookup: {
                    from: "collection_B",
                    let: {
                        "activeRecord": "$activeRecord",
                        '_id': '$_id'
                    },
                    pipeline: [{
                            $match: {
                                $expr: {
                                    $eq: ["$activeRecord", "$$activeRecord"]
                                }
                            }
                        },
                        {
                            $lookup: {
                                from: "collection_C",

                                "pipeline": [{
                                    "$match": {
                                        "$expr": {
                                            "$eq": ["$revision_uLID", "$$activeRecord"]
                                        }
                                    }
                                }]
                            }
                        },
                    ],
                    as: "vendors"
                }
            },
            {
                $project: {
                    _id: 1,
                    vendors: 1

                }
            },

        ]).toArray()

0 个答案:

没有答案