MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB $unset Se la condizione è soddisfatta

Interroga

  • usa una variabile di sistema $$REMOVE se un campo ottiene questo valore viene rimosso
  • quindi la condizione è user.code , mantieni il vecchio valore se non "BLOCKED" ,"CANCELLED" , altrimenti "$$REMOVE" il campo

Testare il codice qui

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

Modifica

Il codice sopra controlla user.status ma vuoi rimuovere il codice o meno in base a user.olderAdress.status (dopo lo svolgimento)(i suoi 2 campi con lo stesso nome)

Query (aggiungi questo dopo le fasi che hai già)

Codice di prova

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