Dari MongoDB 4.0, Anda dapat menggunakan $toBool
operator pipeline agregasi untuk mengonversi nilai menjadi boolean.
Saat Anda mengonversi nilai ke boolean, hasilnya akan menjadi true
atau false
, tergantung pada nilai masukan.
Umumnya, untuk nilai numerik, ini akan mengembalikan false
jika nilainya nol (0
), dan true
untuk nilai lainnya.
Untuk nilai string, ObjectId, dan Date, akan selalu mengembalikan true
.
Contoh
Misalkan kita memiliki koleksi yang disebut types
dan berisi dokumen-dokumen berikut:
{ "_id" : ObjectId("60133e50c8eb4369cf6ad9d9"), "double" : 123.75, "string" : "123", "boolean" : true, "date" : ISODate("2020-12-31T23:30:15.123Z"), "integer" : 123, "long" : NumberLong(123), "decimal" : NumberDecimal("123.75") } { "_id" : ObjectId("60133e50c8eb4369cf6ad9da"), "double" : 0, "string" : "", "boolean" : false, "date" : null, "integer" : 0, "long" : NumberLong(0), "decimal" : NumberDecimal("0.0") }
Kita dapat menggunakan $toBool
operator untuk mengonversi semua tipe tersebut menjadi boolean. Jika inputnya adalah boolean, maka itu hanya mengembalikan boolean.
db.types.aggregate(
[
{
$project:
{
_id: 0,
objectId: { $toBool: "$_id" },
double: { $toBool: "$double" },
string: { $toBool: "$string" },
boolean: { $toBool: "$boolean" },
date: { $toBool: "$date" },
integer: { $toBool: "$integer" },
long: { $toBool: "$long" },
decimal: { $toBool: "$decimal" }
}
}
]
).pretty()
Hasil:
{ "objectId" : true, "double" : true, "string" : true, "boolean" : true, "date" : true, "integer" : true, "long" : true, "decimal" : true } { "objectId" : true, "double" : false, "string" : true, "boolean" : false, "date" : null, "integer" : false, "long" : false, "decimal" : false }
Kita dapat melihat bahwa semua nilai dalam dokumen pertama mengembalikan true
, tetapi banyak di dokumen kedua mengembalikan false
. Juga, nilai tanggal mengembalikan null
karena itu null
untuk memulai.
Kesalahan
Jika Anda menemukan kesalahan, coba gunakan $convert
operator alih-alih $toBool
. $convert
operator memungkinkan Anda menangani kesalahan tanpa memengaruhi keseluruhan operasi agregasi.
$toBool
operator sama dengan menggunakan $convert
operator untuk mengonversi nilai menjadi boolean.
Berikut ini contoh penggunaan $convert
untuk mengonversi string menjadi boolean::
db.types.aggregate(
[
{
$project:
{
_id: 0,
result:
{
$convert: {
input: "$string",
to: "bool",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Hasil:
{ "result" : true }
Lihat MongoDB $convert
untuk lebih banyak contoh.