sql >> データベース >  >> NoSQL >> MongoDB

mongodbで集計中にフィールドを条件付きで投影する方法

    更新

    この集計により、 kill_scoreの値が設定されます 0 _skillsの場合 存在しない場合は、 $redact<を使用します。 / code> kill_scoreを持つサブドキュメントを削除します 0に等しい :

    db.project_if.aggregate([
      {
        $unwind: {
          path: '$_skills',
          preserveNullAndEmptyArrays: true,
        }
      },
      {
        $project: {
          _skills: {
            label: '$_skills',
            skill_score: {
              $cond: {
                if: {
                  $eq: ['$_skills', undefined]
                },
                then: 0,
                else: 1,
              }
            }
          }
        }
      }, 
      {
        $redact: {
          $cond: {
            if: { $eq: [ "$skill_score", 0 ] },
            then: '$$PRUNE',
            else: '$$DESCEND'
          }
        }
      }
    ]);
    

    結果は次のようになります:

    [
      { "_id" : '', "_skills" : { "label" : "skill1", "skill_score" : 1 } },
      { "_id" : '', "_skills" : { "label" : "skill2", "skill_score" : 1 } },
      { "_id" : '' },
    ]
    



    1. mongodbは、フィールド/キーごとの個別の値の数をカウントします

    2. $ elemMatch(射影)が基準に一致するすべてのオブジェクトを返すようにする

    3. マングースを仮想的に取り込む

    4. C ++ドライバーを使用してMongoDBに再接続するにはどうすればよいですか?