Работает как шарм! Большое спасибо!
я есть две коллекции:
Игры со схемой:
_id: ObjectId('gameId'),
questions: [
{
position: 1,
question_id: ObjectId('baz')
},
{
position: 2,
question_id: ObjectId('ban')
},
]
Вопросы со схемой:
_id: ObjectId('baz'),
text: 'FooBar'
А теперь я хотел бы присоединить вопросы к играм с добавлением к каждому значению записи вопросаquestion_position
.
Итак, у меня есть запрос как это:
db.games.aggregate([
{
$lookup: {
from: 'questions',
localField: 'questions.question_id',
foreignField: '_id',
as: 'question_data',
},
}])
Которые возвращают мне всю необходимую информацию, с правильным соединением в соответствии с массивом вопросов,
_id: ObjectId('gameId'),
questions: [
{
position: 1,
question_id: ObjectId('baz')
},
{
position: 2,
question_id: ObjectId('ban')
}
],
question_data: [
{
_id: ObjectId('baz'),
text: 'FooBar',
},
{
_id: ObjectId('ban'),
text: 'FooBar2',
}
]
но я совершенно не могу понять, как добавить в объединенные вопросы свою позицию в соответствии с игрой. Чтобы выглядеть так:
_id: ObjectId('gameId'),
questions: [
{
position: 1,
question_id: ObjectId('baz')
},
{
position: 2,
question_id: ObjectId('ban')
}
],
question_data: [
{
_id: ObjectId('baz'),
text: 'FooBar',
position: 1,
},
{
_id: ObjectId('ban'),
text: 'FooBar2',
position: 2,
}
]
Я пробовал с$unwind
за массив вопросов в игровой коллекции, немного поиграл с$project
вaggregation
но до сих пор нет результата.
Такмой вопрос, как добавить поле из базовой коллекции к объединенным данным из другой коллекции