Пример БД:
db.books.find()
[{ _id: ObjectId("b1"), author: ObjectId("a1"), name: "Fight Club" }]
db.author.find()
[{ _id: ObjectId("a1"), name: "Chuck Palahniuk" }]
Когда я пытаюсь использовать структуру агрегации и заполнять книги авторами, заполненное поле преобразуется в массив с одним элементом. Вот моя попытка:
db.books.aggregate([
{$lookup:
{ from: "authors",
localField: "author",
foreignField: "_id",
as: "author"
}
}
])
Это дает мне следующую структуру:
[{
_id: ObjectId("b1"),
name: "Fight Club",
author: [{ _id: ObjectId("a1"), name: "Chuck Palahniuk" }] // why an array?
}, ...]
Мне нужен просто автор: {_id, name}.
Я знаю, как получить это с arrayElemAt, но этот подход выглядит странно