#mongodb #mongoose #aggregation-framework
Вопрос:
Пожалуйста, найдите json ниже, это выходные данные, полученные с помощью приведенного ниже запроса агрегации:
{
"_id" : ObjectId("614381f4d97b8604ef648435"),
"launchStepName" : "Launch Step - 1",
"problemStep" : [
{
"checkBoxValue" : [
"cb_1",
"cb_2",
"cb_3"
],
"dropDownValue" : [ ],
"radioValue" : [ ],
"selectorValue" : [ ],
"isDeleted" : false,
"_id" : ObjectId("61438284d97b8604ef648437"),
"question" : "is it a problem",
"fieldType" : "checkBox",
"fieldPriorityNumber" : 1
},
{
"checkBoxValue" : [
"cb_1",
"cb_2",
"cb_3"
],
"dropDownValue" : [ ],
"radioValue" : [ ],
"selectorValue" : [ ],
"isDeleted" : false,
"_id" : ObjectId("61438328d97b8604ef648438"),
"question" : "is it a problem -1",
"fieldType" : "checkBox",
"fieldPriorityNumber" : 2
}
],
"answers" : {
"_id" : ObjectId("6144ad01a9279418a18a5b7c"),
"isDeleted" : false,
"qNa" : [
{
"_id" : ObjectId("6144bd0e3e350b19177ac94c"),
"problemStepId" : "61438284d97b8604ef648437",
"answer" : "Answer-21"
}
],
"launchStep" : ObjectId("614381f4d97b8604ef648435"),
"answeredBy" : ObjectId("613e413619968b0652bbbb21"),
"ideaId" : "613e413619968b0652bbbb22",
"createdAt" : ISODate("2021-09-17T20:28:09.429 05:30"),
"updatedAt" : ISODate("2021-09-17T21:36:38.537 05:30"),
"__v" : 0
}
}
Теперь, как я могу заполнить answers
вместо problemStep._id
, используя приведенный ниже запрос, используемый для получения этого вывода.
db.launchsteps.aggregate([
{ $lookup: { from: "answers", localField: "_id", foreignField: "launchStep", as: "answerList" } },
{ $unwind: "$answerList" },
{ $match: {"answerList.answeredBy": ObjectId('613e413619968b0652bbbb21'), "answerList.ideaId": '613e413619968b0652bbbb22', _id: ObjectID('614381f4d97b8604ef648435') } },
{ $sort: { "problemSteps.fieldPriorityNumber": -1 } },
{
$project: {
launchStepName: "$launchSteps",
problemStep: "$problemSteps",
answers: "$answerList"
}
}
])
Мне нужен массив ответов в problemStep._id, так как мы можем использовать его в справочных целях. problemStep
может иметь массив объектов. Пожалуйста, помогите мне решить эту проблему. Я застрял с этим с утра.
Спасибо.