I MongoDB er $cond
aggregeringspipeline-operator evaluerer et boolesk udtryk og returnerer et af de to specificerede returudtryk, afhængigt af om det boolske udtryk er true
eller false
.
$cond
operatoren accepterer to syntakser:en langhåndssyntaks og en stenografisyntaks. Eksempler på hver er nedenfor.
Eksempel
Antag, at vi har en samling kaldet pets
med følgende dokument:
{ "_id" : 1, "name" : "Fetch", "type" : "Dog", "weight" : 20, "height" : 30 }
Longhand-syntaks
Her er et eksempel på anvendelse af $cond
til det dokument ved hjælp af langhåndssyntaksen:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
}
}
}
]
)
Resultat:
{ "isCanine" : "Yes" }
I dette eksempel sammenlignede vi type
felt til en bogstavelig værdi.
I det følgende eksempel sammenligner vi to felter i dokumentet.
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: {
if: {
$gte: [ "$weight", "$height" ] },
then: "Fat",
else: "Skinny"
}
}
}
}
]
)
Resultat:
{ "bodyType" : "Skinny" }
Shorthand-syntaks
$cond
operatoren accepterer også en stenografisyntaks, der gør din kode mere kortfattet.
Stenografien involverer grundlæggende at fjerne if
, then
og else
søgeord.
Når du gør dette, skal du omslutte udtrykkene i et array.
I dette eksempel omskriver vi det første eksempel for at bruge stenografisyntaksen:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: [ { "$type": "Dog" }, "Yes", "No" ]
}
}
}
]
)
Resultat:
{ "isCanine" : "Yes" }
Og her er det andet eksempel med stenografi:
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: [
{ $gte: [ "$weight", "$height" ] },
"Fat",
"Skinny"
]
}
}
}
]
)
Resultat:
{ "bodyType" : "Skinny" }