sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $unset Om villkoret är uppfyllt

Fråga

  • använder en systemvariabel $$REMOVE om ett fält får detta värde tas det bort
  • så villkoret är user.code , behåll det gamla värdet om inte "BLOCKED" ,"CANCELLED" , annars "$$REMOVE" fältet

Testa koden här

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

Redigera

Ovanstående kod kontrollerar user.status men du vill ta bort koden eller inte baserat på user.olderAdress.status (efter avkopplingen) (dess 2 fält med samma namn status)

Fråga (lägg till detta efter de steg du redan har)

Testkod

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



  1. Spring HATEOAS RepresentationModel, kan inte ställa in egenskapslänkar eftersom ingen setter, ingen vissnar och det inte är en del av persistenskonstruktorn

  2. När en mongodb-markör kommer att upphöra

  3. Hur jämför man två strängar i mongoDB fjäderdata?

  4. nestJS socket.io-redis:6.0.1