V MongoDB, $cond
operátor agregačního kanálu vyhodnotí booleovský výraz a vrátí jeden ze dvou zadaných návratových výrazů v závislosti na tom, zda je booleovský výraz true
nebo false
.
$cond
Operátor akceptuje dvě syntaxe:longhand syntax a shorthand syntax. Příklady každého z nich jsou uvedeny níže.
Příklad
Předpokládejme, že máme sbírku nazvanou pets
s následujícím dokumentem:
{ "_id" : 1, "name" : "Fetch", "type" : "Dog", "weight" : 20, "height" : 30 }
Dlouhá syntaxe
Zde je příklad použití $cond
k tomuto dokumentu pomocí dlouhé syntaxe:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
}
}
}
]
)
Výsledek:
{ "isCanine" : "Yes" }
V tomto příkladu jsme porovnávali type
pole na doslovnou hodnotu.
V následujícím příkladu porovnáme dvě pole v dokumentu.
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: {
if: {
$gte: [ "$weight", "$height" ] },
then: "Fat",
else: "Skinny"
}
}
}
}
]
)
Výsledek:
{ "bodyType" : "Skinny" }
Syntaxe zkráceného textu
$cond
Operátor také přijímá zkrácenou syntaxi, díky které je váš kód stručnější.
Zkratka v podstatě zahrnuje odstranění if
, then
a else
klíčová slova.
Když to uděláte, musíte výrazy uzavřít do pole.
V tomto příkladu přepíšeme první příklad tak, aby používal zkrácenou syntaxi:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: [ { "$type": "Dog" }, "Yes", "No" ]
}
}
}
]
)
Výsledek:
{ "isCanine" : "Yes" }
A zde je druhý příklad použití těsnopisu:
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: [
{ $gte: [ "$weight", "$height" ] },
"Fat",
"Skinny"
]
}
}
}
]
)
Výsledek:
{ "bodyType" : "Skinny" }