MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB $unset Se a condição for atendida


Consulta
  • usa uma variável de sistema $$REMOVE se um campo obtiver esse valor, será removido
  • então a condição é user.code , mantém o valor antigo se não "BLOCKED" ,"CANCELLED" , senão "$$REMOVE" o campo

Teste o código aqui
db.collection.aggregate([
  {
    "$set": {
      "user.code": {
        "$cond": [
          {
            "$in": [
              "$user.status",
              [
                "BLOCKED",
                "CANCELLED"
              ]
            ]
          },
          "$$REMOVE",
          "$user.code"
        ]
      }
    }
  }
])

Editar

O código acima verifica o user.status mas você deseja remover o código ou não com base no user.olderAdress.status (após o desenrolar) (seus 2 campos com o mesmo status de nome)

Consulta (adicione isso após os estágios que você já possui)

Código de teste
{
    "$set": {
      "user.code": {
        "$cond": [
          {
            "$in": [
              "$user.status",
              [
                "BLOCKED",
                "CANCELLED"
              ]
            ]
          },
          "$$REMOVE",
          "$user.code"
        ]
      }
    }
  }