Присоединитесь к другой коллекции в $ lookup с помощью запроса $ mergedObject - PullRequest
0 голосов
/ 28 августа 2018

У меня есть этот запрос, который использует левое соединение MongoDB. Я хочу добавить еще один $ lookup, но не могу заставить его работать, когда помещаю его перед $ lookup, в котором есть $ mergeObjects.

db.getCollection("coverages").aggregate([
        {
        $lookup: {
            from: "filings",
            let: { coverageRepoNo: "$RepoNo" },
            pipeline: [
                {
                    $match: {
                        $expr: { $eq: ["$RepoNum", "$$coverageRepoNo"] }
                    }
                },
                { $sort: { PeriodEndDate: -1, SubType: 1 } },
                { $group: { _id: "$RepoNum", data: { $first: "$$ROOT" } } },
                { $replaceRoot: { newRoot: "$data" } }
            ],
            as: "fromItems"
        }
    },
    {
        $replaceRoot: {
            newRoot: {
                $mergeObjects: [
                    { $arrayElemAt: ["$fromItems", 0], },
                    "$$ROOT"
                ]
            }
        }
    },
    { $project: { fromItems: 0, __v: 0, _id: 0 } }
])

Я хочу добавить еще один поиск в $. Куда мне положить $ lookup с этими свойствами?

$lookup: {
            from: "analysts",
            localField: "AnalystID", // field in the coverages collection
            foreignField: "AnalystID", // field inthe analysts collection
            as: "fromAnalysts"
        }

эй @AnthonyWinzlet вот пример данных, когда я помещаю поиск в первую строку

{ 
"AnalystID" : "JDO", 
"AnalystName" : "John Doe", 
"AnalystLocationName" : "California", 
"fromAnalysts" : [
    {
        "_id" : ObjectId("5b84a79135da280d88858a13"), 
        "AnalystID" : "JDO", 
        "AnalystName" : "John Doe", 
        "AnalystLocationName" : "California",
        "TLName": "Foo Bar"
    }
]}

Я хочу, чтобы "TLName" отображалось только после "AnalystLocationName". Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...