$ addfield在Spesific Condiiton Mongodb

发布于 2025-01-18 13:11:38 字数 2166 浏览 0 评论 0原文

我现在有这些数据在汇总时,

    [{_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'
       }
      },
      ]
     }
    ]

我想添加条件 带有名称的AddField formated_status_evaluation_essay和formated_status_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'

formation_status_evaluation_essay_option具有相同的条件,而evaluation_essay

soo 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' 
               ] 
            } 
        } 
    }

I have this data when get by aggregation

    [{_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'
       }
      },
      ]
     }
    ]

Now i want to addfield with condition
addfield with name
formated_status_evaluation_essay and formated_status_evaluation_essay_option,

with condition:

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 is have same condition with evaluation_essay

Soo expected output would be like

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

How to write a correct addfield with condition in mongodb to make an output like that?
thanks before i've tried soo many ways but still got no answer.

i tried this but seems i put a wrong syntax

      { 
        '$addFields': { 
          'formated_status_evaluation_essay': { 
               '$cond': [ 
                   {
                    '$and': [ 
                      {'$question_answer.question.type_soal ': 
                      'essay'},
                      {'$question_answer.nilai':{$ne:null}},
                      ]    
                    },
                   'already scoring', 
                   'havent scoring' 
               ] 
            } 
        } 
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生来就爱笑 2025-01-25 13:11:38
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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文