W MongoDB $cond
operator potoku agregacji oblicza wyrażenie logiczne i zwraca jedno z dwóch określonych wyrażeń zwracanych, w zależności od tego, czy wyrażenie logiczne jest true
lub false
.
$cond
operator akceptuje dwie składnie:składnię odręczną i składnię skróconą. Przykłady każdego z nich znajdują się poniżej.
Przykład
Załóżmy, że mamy kolekcję o nazwie pets
z następującym dokumentem:
{ "_id" : 1, "name" : "Fetch", "type" : "Dog", "weight" : 20, "height" : 30 }
Składnia odręczna
Oto przykład zastosowania $cond
do tego dokumentu przy użyciu składni odręcznej:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
}
}
}
]
)
Wynik:
{ "isCanine" : "Yes" }
W tym przykładzie porównaliśmy type
pole na wartość dosłowną.
W poniższym przykładzie porównujemy dwa pola w dokumencie.
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: {
if: {
$gte: [ "$weight", "$height" ] },
then: "Fat",
else: "Skinny"
}
}
}
}
]
)
Wynik:
{ "bodyType" : "Skinny" }
Składnia skrótów
$cond
operator akceptuje również skróconą składnię, która sprawia, że kod jest bardziej zwięzły.
Skrót zasadniczo polega na usunięciu if
, then
i else
słowa kluczowe.
Kiedy to zrobisz, musisz umieścić wyrażenia w tablicy.
W tym przykładzie przepisujemy pierwszy przykład, używając skróconej składni:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: [ { "$type": "Dog" }, "Yes", "No" ]
}
}
}
]
)
Wynik:
{ "isCanine" : "Yes" }
A oto drugi przykład ze skrótem:
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: [
{ $gte: [ "$weight", "$height" ] },
"Fat",
"Skinny"
]
}
}
}
]
)
Wynik:
{ "bodyType" : "Skinny" }