在MongoDB的特殊条件下添加$addfield



当通过聚合获取时,我有这些数据

[{_id: 1,
name:'Abraham',
class:'V',
question_answered:[{
id:'quest1',
answer:'A',
score:10,
question:{
soal:'apa judul lagu?',
correct_answer:'A',
type_question:'Essay'
}
},
{
id:'quest2'
answer:'C',
score:null,
question:{
soal:'apa judul lagu B?',
correct_answer:'B',
type_question:'Essay'
}
},
{
id:'quest3'
answer:'C',
score:10,
question:{
soal:'apa judul lagu C?',
correct_answer:'C',
type_question:'essay_pg'
}
},
]
}
]

现在我想添加带条件的字段带名称的addfieldformated_status_evaluation_sessary和formated_states_evaluation_essay_option,

条件:

IF(question_answer.question.type_question === 'Essay' && score !== null)
formated_status_evaluation_essay = 'already scoring'
Elseif(question_answer.question.type_question === 'Essay' && score === null)
formated_status_evaluation_essay = 'haven't scoring'
Elseif(question_answer.question.type_question === 'Essay' is not exists
formated_status_evaluation_essay = 'No essay question'

formated_status_evaluation_essay_option与evaluation_essue 具有相同的条件

Soo预计产量将类似

[{_id: 1,
name:'Abraham',
class:'V',
question_answered:[.........]
formated_status_evaluation_essay:'havent Scoring',
formated_status_evaluation_essay_option:'Already Scoring'
}
]

如何在mongodb中编写一个正确的带条件的addfield来生成这样的输出?谢谢你,我试了很多方法,但还是没有得到答案。

我试过了,但似乎我放错了语法

{ 
'$addFields': { 
'formated_status_evaluation_essay': { 
'$cond': [ 
{
'$and': [ 
{'$$question_answer.question.type_soal ': 
'essay'},
{'$$question_answer.nilai':{$ne:null}},
]    
},
'already scoring', 
'havent scoring' 
] 
} 
} 
}
db.collection.aggregate([
{
$set: {
formated_status_evaluation_essay: {
$cond: [
{
$and: [
{
$in: [
"Essay",
"$question_answered.question.type_question"
]
},
{
$ne: [
"$question_answered.score",
null
]
}
]
},
"already scoring",
"havent scoring"
]
}
}
}
])

mongoplayground

最新更新