У меня есть две коллекции:
Игры со схемой:
_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
, но все еще безрезультатно.
Итак , мой вопрос: как добавить поле из базовой коллекции в объединенные данные из другой коллекции