У меня есть две коллекции, которые я хочу объединить с совокупностью.Первый - «книги»
{
"_id": "56e31ce076cdf52e541d9d28",
"title": "Good Omens",
"author": [
{
"_id": "56e31ce076cdf50ssdksi998j",
"function": "Writer"
},
{
"_id": "56e31ce076cdf52e541d9d29",
"function": "Illustrator"
}
]
}
Второй - «авторы»
{
"_id": "56e31ce076cdf50ssdksi998j",
"name": "Terry Pratchett"
}
{
"_id": "56e31ce076cdf52e541d9d29",
"name": "Neil Gaiman"
}
Результат, который я ожидаю, таков:
{
"_id": "56e31ce076cdf52e541d9d28",
"title": "Good Omens",
"author": [
{
"_id": "56e31ce076cdf50ssdksi998j",
"function": "Writer",
"name": "Terry Pratchett"
},
{
"_id": "56e31ce076cdf52e541d9d29",
"function": "Illustrator",
"name": "Neil Gaiman"
}
]
}
Но яне в состоянии объединить оба массива.Подход, который я пробовал до сих пор, использует совокупный запрос с поиском и проектом, но он не объединяет массивы.Если я сделаю это:
Books.aggregate([
{
$lookup: {
from: 'authors',
localField: 'author._id',
foreignField: '_id',
as: 'authors'
}
}
{
$project: {
title: 1,
'authors._id': 1,
'authors.name': 1,
'authors.function': '$author.function'
}
}
])
.exec(...)
Я получу что-то вроде этого:
{
"_id": "56e31ce076cdf52e541d9d28",
"title": "Good Omens",
"author": [
{
"_id": "56e31ce076cdf50ssdksi998j",
"function": ["Writer", "Illustrator"],
"name": "Terry Pratchett"
},
{
"_id": "56e31ce076cdf52e541d9d29",
"function": ["Writer", "Illustrator"],
"name": "Neil Gaiman"
}
]
}
Но я не хочу получать все данные по каждому автору, только по соответствующей позиции.Спасибо!