MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $unset Wenn die Bedingung erfüllt ist

Abfrage

  • verwendet eine Systemvariable $$REMOVE Wenn ein Feld diesen Wert erhält, wird es entfernt
  • also ist die Bedingung user.code , alten Wert beibehalten, wenn nicht "BLOCKED" ,"CANCELLED" , sonst "$$REMOVE" das Feld

Testcode hier

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

Bearbeiten

Der obige Code überprüft den user.status aber Sie möchten Code entfernen oder nicht basierend auf user.olderAdress.status (nach dem Abwickeln)(seine 2 Felder mit gleichem Namensstatus)

Abfrage (fügen Sie dies nach den Phasen hinzu, die Sie bereits haben)

Testcode

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