У меня есть этот запрос, который использует левое соединение 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". Как я могу это сделать?