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" }