Я бился головой об это некоторое время. Опыт MongoDB ограничен / устарел, но я выполняю $lookup
, который присоединяется так, как мне бы хотелось. Тем не менее, as
переписывает весь мой поддокумент. Я прочитал в документации, что это такое поведение, но я пытаюсь выполнить поиск, используя вложенную ссылку, которая работает, но затем установить объединяющие данные для этой ссылки (или, по крайней мере, в этой подпрограмме). документ) вместе с существующими данными, которые находятся внутри вложенного документа.
У меня также есть сложность в том, что этот лог c - по законным причинам - не работает из Id
Пример команды макета ниже:
db.getCollection('agendas').aggregate([
{
$match: {
'book.author._id': ObjectId('author-id')
}
},
{
$lookup:
{
from: 'author',
// an array of keys e.g. ['penguin', 'puffin']
localField: 'book.author.publishers',
foreignField: 'pub_key',
as: 'book.author.publishers'
}
},
])
Вывод:
{
book: {
name: 'The Bible',
author: {
publishers: [
...allJoinedPublishersData
]
}
}
}
Так что моя проблема в том, что поиск работает, но он уничтожает весь объект автора и все данные на вложенных уровнях - я боролся с слияния и группировки и не удалось заставить это работать. Какую команду использовать? Эффективно объединить существующий документ с присоединенными данными. Спасибо за любую помощь!