In MongoDB ist die $cond
Der Aggregations-Pipeline-Operator wertet einen booleschen Ausdruck aus und gibt einen der beiden angegebenen Rückgabeausdrücke zurück, je nachdem, ob der boolesche Ausdruck true
ist oder false
.
Der $cond
-Operator akzeptiert zwei Syntaxen:eine Langschrift-Syntax und eine Kurzschrift-Syntax. Beispiele dafür finden Sie unten.
Beispiel
Angenommen, wir haben eine Sammlung namens pets
mit folgendem Dokument:
{ "_id" : 1, "name" : "Fetch", "type" : "Dog", "weight" : 20, "height" : 30 }
Langschrift-Syntax
Hier ist ein Beispiel für die Anwendung von $cond
zu diesem Dokument mit der Langschrift-Syntax:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
}
}
}
]
)
Ergebnis:
{ "isCanine" : "Yes" }
In diesem Beispiel haben wir den type
verglichen Feld in einen Literalwert.
Im folgenden Beispiel vergleichen wir zwei Felder innerhalb des Dokuments.
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: {
if: {
$gte: [ "$weight", "$height" ] },
then: "Fat",
else: "Skinny"
}
}
}
}
]
)
Ergebnis:
{ "bodyType" : "Skinny" }
Kurzschriftsyntax
Der $cond
Operator akzeptiert auch eine Kurzschreibweise, die Ihren Code prägnanter macht.
Die Abkürzung beinhaltet im Wesentlichen das Entfernen des if
, then
, und else
Schlüsselwörter.
Wenn Sie dies tun, müssen Sie die Ausdrücke in ein Array einschließen.
In diesem Beispiel schreiben wir das erste Beispiel neu, um die Kurzschriftsyntax zu verwenden:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: [ { "$type": "Dog" }, "Yes", "No" ]
}
}
}
]
)
Ergebnis:
{ "isCanine" : "Yes" }
Und hier ist das zweite Beispiel mit Kurzschrift:
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: [
{ $gte: [ "$weight", "$height" ] },
"Fat",
"Skinny"
]
}
}
}
]
)
Ergebnis:
{ "bodyType" : "Skinny" }