首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$addfield在特殊条件下的MongoDB

$addfield在特殊条件下的MongoDB
EN

Stack Overflow用户
提问于 2022-04-01 05:43:48
回答 1查看 45关注 0票数 0

当通过聚合获得数据时,我拥有这些数据。

代码语言:javascript
复制
    [{_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'
       }
      },
      ]
     }
    ]

现在我想添加名为formated_status_evaluation_essay和formated_status_evaluation_essay_option的条件加法字段,

条件:

代码语言:javascript
复制
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_essay具有相同的条件

Soo的预期产出就像

代码语言:javascript
复制
[{_id: 1,
  name:'Abraham',
  class:'V',
  question_answered:[.........]
  formated_status_evaluation_essay:'havent Scoring',
 formated_status_evaluation_essay_option:'Already Scoring'
 }
]

如何在mongodb中使用条件编写一个正确的附加字段来生成这样的输出?谢谢,以前我试过很多种方法,但还是没有得到答复。

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

代码语言:javascript
复制
      { 
        '$addFields': { 
          'formated_status_evaluation_essay': { 
               '$cond': [ 
                   {
                    '$and': [ 
                      {'$$question_answer.question.type_soal ': 
                      'essay'},
                      {'$$question_answer.nilai':{$ne:null}},
                      ]    
                    },
                   'already scoring', 
                   'havent scoring' 
               ] 
            } 
        } 
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-01 05:58:29

代码语言:javascript
复制
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"
        ]
      }
    }
  }
])

蒙古操场

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71702304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档