У меня есть две коллекции: games
и questions
game
схема:
{
_id: ObjectId,
status: 'played',
questions:
[
{ questionId: ObjectId(questions._id) } // ref to questions collection by _id field
]
}
questions
схема:
{
_id: ObjectId(),
text: foobar
}
В игре может быть двестатусы: «активные» и «сыгранные».
Моя цель - получить все «сыгранные» вопросы, средства, вопросы, связанные с играми, со статусом «сыграно».
Я пробовалчтобы делать запросы к коллекции games
, пытался делать запросы к questions
, но ни один из них не работал.
Некоторые из них:
db.games.aggregate([
{$match: {status: {$ne: 'played'}}},
{
$lookup:
{
from: 'questions',
localField: 'questions.questionId',
foreignField: '_id',
as: 'game_questions'
}
},
{$project: {game_questions: 1}},
{$unwind: {path: '$game_questions', preserveNullAndEmptyArrays: false}}
])
или
db.questions.aggregate([
{ $project: {text: 1}},
{ $lookup: {
from: 'games',
pipeline: [
{ $match: {status:'played' }},
{ $project: { status: 1 }}
],
as: 'game_data'
}}
])
Итог : После запроса я хотел бы получить список с вопросами, где статус игры «играл».