Проблемы с использованием конвейера и получением правильных данных в моем агрегированном запросе. У меня есть две коллекции, в которых они обе имеют общий идентификатор (eventId), который я хочу использовать для «объединения» этих коллекций.
Документ из коллекции Pool
{
"_id": ObjectId("5e1ebbc6cffd4b042fc081ab"),
"eventId": "ABC_2020-01-15_40_1",
"trackName": "Foo",
"type": "bar"
}
Документ из коллекции Races ( несколько с одинаковым идентификатором события
{
"_id": ObjectId("5e1ebbc6cffd4b042fc081a1"),
"eventId": "ABC_2020-01-15_40_1",
"Data": {foo:"bar"}
}
Данные, которые я получаю, включают все документы из коллекции рас, кажется, что конвейер не работает, так как я получаю тот же результат, как если бы передать [] в конвейер. Я хотел бы получить некоторую помощь в выяснении этого, так как я хочу, чтобы в результате были только те, кто имеет одинаковый идентификатор события в обеих коллекциях.
const result = await PoolModel.aggregate([
{
$match: {
eventId,
},
},
{
$lookup: // join two collections
{
from: 'races', // races collection
let: { eventId: '$event.eventId' }, // define vars to use in pipeline
pipeline: [
{ $match: { $expr: ['$eventId', '$$eventId'] } },
{ $project: projection },
],
as: 'races', // Display in new result as as
},
},
]);
Это мой результат:
result: [ { _id: 5e1ebbc6cffd4b042fc081ab,
eventId: 'ABC_2020-01-15_40_1',
trackName: 'Foo',
type: 'bar',
races:
[ [Object], // Wrong id
[Object], // Wrong id
[Object], // Wrong id
[Object], // Wrong id
[Object], // Wrong id
[Object], // Wrong id
[Object], // Wrong id
[Object], // Correct id
[Object], // Correct id
[Object], // Correct id
[Object], // Correct id
[Object], // Correct id
[Object], // Correct id
[Object], // Correct id
[Object] ] } ]