Di MongoDB, $cond
operator pipa agregasi mengevaluasi ekspresi boolean, dan mengembalikan salah satu dari dua ekspresi pengembalian yang ditentukan, bergantung pada apakah ekspresi boolean true
atau false
.
$cond
operator menerima dua sintaks:sintaks longhand dan sintaks shorthand. Contoh masing-masing ada di bawah.
Contoh
Misalkan kita memiliki koleksi yang disebut pets
dengan dokumen berikut:
{ "_id" : 1, "name" : "Fetch", "type" : "Dog", "weight" : 20, "height" : 30 }
Sintaks Tulisan Tangan
Berikut ini contoh penerapan $cond
ke dokumen itu menggunakan sintaks tulisan tangan:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
}
}
}
]
)
Hasil:
{ "isCanine" : "Yes" }
Dalam contoh ini, kami membandingkan type
bidang ke nilai literal.
Dalam contoh berikut, kami membandingkan dua bidang dalam dokumen.
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: {
if: {
$gte: [ "$weight", "$height" ] },
then: "Fat",
else: "Skinny"
}
}
}
}
]
)
Hasil:
{ "bodyType" : "Skinny" }
Sintaks Singkat
$cond
operator juga menerima sintaks singkatan yang membuat kode Anda lebih ringkas.
Singkatan pada dasarnya melibatkan penghapusan if
, then
, dan else
kata kunci.
Saat Anda melakukan ini, Anda perlu menyertakan ekspresi dalam array.
Dalam contoh ini, kami menulis ulang contoh pertama menggunakan sintaks singkatan:
db.pets.aggregate(
[
{ $project: {
_id: 0,
isCanine: {
$cond: [ { "$type": "Dog" }, "Yes", "No" ]
}
}
}
]
)
Hasil:
{ "isCanine" : "Yes" }
Dan inilah contoh kedua menggunakan steno:
db.pets.aggregate(
[
{ $project: {
_id: 0,
bodyType: {
$cond: [
{ $gte: [ "$weight", "$height" ] },
"Fat",
"Skinny"
]
}
}
}
]
)
Hasil:
{ "bodyType" : "Skinny" }