当通过聚合获取时,我有这些数据
[{_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