У меня есть следующая база данных:
Запросы Коллекция
{
"_id" : "m5tkeDo",
"CourseId" : "KcfEGbZlyP",
"QuizId" : "lMJkv81LyU",
"QuestionId" : "DF9WeKATyf",
...
}
Викторины Коллекция
{
"_id" : "lMJkv81LyU",
...
"MultipleChoiceQuestions" : [],
"MultipleSelectQuestions" : [],
"TrueOrFalse" : [
{
"_id" : "DF9WeKATyf",
...
}
],
...
}
Использование поиск Я могу получить Quiz
от Request
:
db.getCollection('Requests').aggregate([
{ $match: { _id: "m5tkeDo" } },
{
$lookup: {
from: "Quizzes",
localField: "QuizId",
foreignField: "_id",
as: "Quiz"
}
},
{ $unwind: "$Quiz" }
]);
, который возвращает что-то вроде этого
{
"_id" : "m5tkeDo",
"QuizId" : "lMJkv81LyU",
"QuestionId" : "DF9WeKATyf",
...
"Quiz" : {
"_id" : "lMJkv81LyU",
...
"MultipleChoiceQuestions" : [],
"MultipleSelectQuestions" : [],
"TrueOrFalse" : [
{
"_id" : "DF9WeKATyf",
...
}
],
...
}
}
То, что я пытаюсь выяснить, это Могу ли я получить вопрос, который является объектом в массиве TrueOrFalse
Quiz
? Неизвестно, будет ли коллекция элементом массива TrueOrFalse
, MultipleChoiceQuestions
или MultipleSelectQuestions
, поэтому мне нужно просмотреть все из них.
Конечный результат выглядит примерно так:
{
"_id" : "m5tkeDo",
"QuizId" : "lMJkv81LyU",
"QuestionId" : "DF9WeKATyf",
...
"Quiz" : {
...
},
"Question": {
"_id" : "DF9WeKATyf",
...
}
}