MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $unset Si la condition est remplie

Requête

  • utilise une variable système $$REMOVE si un champ obtient cette valeur, il est supprimé
  • donc la condition est user.code , conserver l'ancienne valeur sinon "BLOCKED" ,"CANCELLED" , sinon "$$REMOVE" le terrain

Code de test ici

db.collection.aggregate([
  {
    "$set": {
      "user.code": {
        "$cond": [
          {
            "$in": [
              "$user.status",
              [
                "BLOCKED",
                "CANCELLED"
              ]
            ]
          },
          "$$REMOVE",
          "$user.code"
        ]
      }
    }
  }
])

Modifier

Le code ci-dessus vérifie le user.status mais vous voulez supprimer le code ou non en fonction du user.olderAdress.status (après le déroulement)(ses 2 champs avec le même statut de nom)

Requête (ajoutez-la après les étapes que vous avez déjà)

Code de test

{
    "$set": {
      "user.code": {
        "$cond": [
          {
            "$in": [
              "$user.status",
              [
                "BLOCKED",
                "CANCELLED"
              ]
            ]
          },
          "$$REMOVE",
          "$user.code"
        ]
      }
    }
  }