sql >> Database >  >> NoSQL >> MongoDB

MongoDB $cond

In MongoDB, de $cond aggregatiepijplijnoperator evalueert een booleaanse expressie en retourneert een van de twee opgegeven retourexpressies, afhankelijk van of de booleaanse expressie true is of false .

De $cond operator accepteert twee syntaxis:een longhand-syntaxis en een steno-syntaxis. Voorbeelden van elk staan ​​hieronder.

Voorbeeld

Stel dat we een verzameling hebben met de naam pets met het volgende document:

{
	"_id" : 1,
	"name" : "Fetch",
	"type" : "Dog",
	"weight" : 20,
	"height" : 30
}

Vertaalde syntaxis

Hier is een voorbeeld van het toepassen van $cond naar dat document met behulp van de syntaxis:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        isCanine: { 
          $cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
          }
      }
    }
  ]
)

Resultaat:

{ "isCanine" : "Yes" }

In dit voorbeeld vergeleken we het type veld naar een letterlijke waarde.

In het volgende voorbeeld vergelijken we twee velden in het document.

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        bodyType: { 
          $cond: { 
            if: { 
              $gte: [ "$weight", "$height" ] }, 
              then: "Fat", 
              else: "Skinny" 
              }
          }
      }
    }
  ]
)

Resultaat:

{ "bodyType" : "Skinny" }

Shorthand-syntaxis

De $cond operator accepteert ook een verkorte syntaxis die uw code beknopter maakt.

De afkorting omvat in feite het verwijderen van de if , then , en else trefwoorden.

Wanneer u dit doet, moet u de uitdrukkingen in een array plaatsen.

In dit voorbeeld herschrijven we het eerste voorbeeld om de verkorte syntaxis te gebruiken:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        isCanine: { 
          $cond: [ { "$type": "Dog" }, "Yes", "No" ]
          }
      }
    }
  ]
)

Resultaat:

{ "isCanine" : "Yes" }

En hier is het tweede voorbeeld met steno:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        bodyType: { 
          $cond: [
              { $gte: [ "$weight", "$height" ] }, 
              "Fat", 
              "Skinny" 
              ]
          }
      }
    }
  ]
)

Resultaat:

{ "bodyType" : "Skinny" }

  1. Klasse 'MongoDB\Driver\Manager' niet gevonden

  2. Hoe MongoDB geneste $elemMatch Query in C# te implementeren

  3. Docker [Errno 111] Connect-oproep mislukt ('127.0.0.1', 6379)

  4. Django Channels Error - Kan BACKEND 'asgi_redis.RedisChannelLayer' niet importeren