sql >> Database >  >> NoSQL >> MongoDB

MongoDB $uitgeschakeld Als aan de voorwaarde is voldaan

Zoekopdracht

  • gebruikt een systeemvariabele $$REMOVE als een veld deze waarde krijgt, wordt het verwijderd
  • dus de voorwaarde is user.code , oude waarde behouden indien niet "BLOCKED" ,"CANCELLED" , else "$$REMOVE" het veld

Test code hier

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

Bewerken

De bovenstaande code controleert de user.status maar u wilt al dan niet code verwijderen op basis van de user.olderAdress.status (na het afwikkelen)(zijn 2 velden met dezelfde naamstatus)

Query (voeg dit toe na de fasen die je al hebt)

Testcode

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



  1. Loop voert geen waar of onwaar uit op basis van de zoekopdracht

  2. Kan geen naamruimte maken in transactie met meerdere documenten (MongoDB 4.0, Spring Data 2.1.0, Spring Boot)

  3. Mongoose - Hoe groeperen op en bevolken?

  4. Swagger (Swashbuckle voor C#) toont Mongo ObjectId als meerdere velden in plaats van een enkele string