I MongoDB, $cond aggregeringspipeline-operatorn utvärderar ett booleskt uttryck och returnerar ett av de två angivna returuttrycken, beroende på om det booleska uttrycket är true eller false .
$cond operatorn accepterar två syntaxer:en långhandssyntax och en stenografisyntax. Exempel på varje är nedan.
Exempel
Anta att vi har en samling som heter pets med följande dokument:
{
"_id" : 1,
"name" : "Fetch",
"type" : "Dog",
"weight" : 20,
"height" : 30
} Longhand-syntax
Här är ett exempel på hur du använder $cond till det dokumentet med hjälp av långhandssyntaxen:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
}
}
}
]
) Resultat:
{ "isCanine" : "Yes" }
I det här exemplet jämförde vi type fältet till ett bokstavligt värde.
I följande exempel jämför vi två fält i dokumentet.
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: {
if: {
$gte: [ "$weight", "$height" ] },
then: "Fat",
else: "Skinny"
}
}
}
}
]
) Resultat:
{ "bodyType" : "Skinny" } Shorthand-syntax
$cond operatorn accepterar också en stenografisyntax som gör din kod mer kortfattad.
Stenografin innebär i princip att if tas bort , then och else sökord.
När du gör detta måste du omsluta uttrycken i en array.
I det här exemplet skriver vi om det första exemplet för att använda stenografisyntaxen:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: [ { "$type": "Dog" }, "Yes", "No" ]
}
}
}
]
) Resultat:
{ "isCanine" : "Yes" } Och här är det andra exemplet med stenografi:
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: [
{ $gte: [ "$weight", "$height" ] },
"Fat",
"Skinny"
]
}
}
}
]
) Resultat:
{ "bodyType" : "Skinny" }