Dari MongoDB 4.0, Anda dapat menggunakan $toInt
operator pipa agregasi untuk mengonversi nilai menjadi bilangan bulat.
Sebagian besar tipe dapat dikonversi menjadi integer, tetapi nilai ObjectId dan Date tidak dapat.
Saat Anda mengonversi boolean ke bilangan bulat, jika boolean true
, maka bilangan bulatnya adalah 1
. Jika boolean false
, maka bilangan bulatnya adalah 0
.
Nilai numerik seperti ganda dan desimal dipotong sesuai kebutuhan.
Contoh
Misalkan kita memiliki koleksi yang disebut types
dan berisi dokumen-dokumen berikut:
{ "_id" : ObjectId("601340eac8eb4369cf6ad9db"), "double" : 123.75, "string" : "123", "boolean" : true, "date" : ISODate("2020-12-31T23:30:15.123Z"), "integer" : 123, "long" : NumberLong(123), "decimal" : NumberDecimal("123.75") }
Kita dapat menggunakan $toInt
operator untuk mengonversi bidang tersebut (kecuali untuk _id
dan date
bidang) ke bilangan bulat. Jika input sudah berupa bilangan bulat, maka itu hanya mengembalikan bilangan bulat.
db.types.aggregate(
[
{
$project:
{
_id: 0,
double: { $toInt: "$double" },
string: { $toInt: "$string" },
boolean: { $toInt: "$boolean" },
integer: { $toInt: "$integer" },
long: { $toInt: "$long" },
decimal: { $toInt: "$decimal" }
}
}
]
).pretty()
Hasil:
{ "double" : 123, "string" : 123, "boolean" : 1, "integer" : 123, "long" : 123, "decimal" : 123 }
Perhatikan bahwa saya mengecualikan date
dan _id
bidang dari operasi, karena jenis ini tidak dapat dikonversi ke bilangan bulat.
Kesalahan
Jika Anda menemukan kesalahan, coba gunakan $convert
operator alih-alih $toInt
. $convert
operator memungkinkan Anda menangani kesalahan tanpa memengaruhi keseluruhan operasi agregasi.
$toInt
operator sama dengan menggunakan $convert
operator untuk mengonversi nilai menjadi bilangan bulat.
Berikut ini contoh penggunaan $convert
untuk mencoba mengonversi tanggal menjadi bilangan bulat (yang menghasilkan kesalahan):
db.types.aggregate(
[
{
$project:
{
_id: 0,
result:
{
$convert: {
input: "$date",
to: "int",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Hasil:
{ "result" : "An error occurred" }
Menggunakan $convert
memungkinkan kami untuk menentukan pesan kesalahan yang akan digunakan saat kesalahan terjadi, dan itu tidak menghentikan seluruh operasi agregasi.
Lihat MongoDB $convert
untuk lebih banyak contoh.