sql >> Database >  >> NoSQL >> MongoDB

Hoe velden voorwaardelijk te projecteren tijdens aggregatie in mongodb

Bijgewerkt

Deze aggregatie stelt de waarde in van skill_score naar 0 if _skills niet bestaat, gebruik dan $redact om het subdocument met skill_score . te verwijderen is gelijk aan 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'
      }
    }
  }
]);

Het resultaat zou zijn als:

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



  1. een verzameling opvragen zonder het schema in mangoest door te geven

  2. MongoDB. Stel een uniek nummer in voor elk document in de collectie

  3. MongoDB-gegevensmodellering gebruiken om doorvoerbewerkingen te verbeteren

  4. Gebruik meer dan één schema per verzameling op mongodb