Di MongoDB, $abs
operator pipeline agregasi mengembalikan nilai absolut dari sebuah angka.
Contoh
Misalkan kita memiliki koleksi yang disebut data
dengan dokumen berikut:
{ "_id" : 1, "a" : 20, "b" : -20 }
Kita dapat menggunakan $abs
operator untuk mengembalikan nilai absolut dari a
dan b
bidang.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
Hasil:
{ "a" : 20, "b" : 20 }
Nilai absolut tidak memiliki tanda apa pun, sehingga kita dapat melihat tanda negatif telah dihapus dari b
nilai.
Anda dapat menganggap nilai mutlak suatu bilangan sebagai jarak, pada garis bilangan, dari bilangan tersebut dari nol.
Nilai Null
Nilai nol mengembalikan null
saat menggunakan $abs
operator.
Misalkan kita menambahkan dokumen berikut ke koleksi kita:
{ "_id" : 2, "a" : 0, "b" : null }
Mari kita jalankan $abs
operator terhadap dokumen itu:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
Hasil:
{ "a" : 0, "b" : null }
Kita dapat melihat bahwa b
diselesaikan menjadi null
.
Kita juga dapat melihat bahwa 0
memutuskan untuk 0
.
Nilai NaN
Jika argumen diselesaikan menjadi NaN
, $abs
mengembalikan NaN
.
Contoh:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ 1 * "g" ] }
}
}
]
)
Hasil:
{ "a" : 0, "b" : NaN }
Dalam hal ini saya mencoba mengalikan angka dengan string, yang menghasilkan NaN
dikembalikan.
Bidang Tidak Ada
Jika $abs
operator diterapkan pada bidang yang tidak ada, null
dikembalikan.
Contoh:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
c: { $abs: [ "$c" ] }
}
}
]
)
Hasil:
{ "c" : null }
Dikombinasikan Dengan Operator Lain
Dalam contoh ini saya menggabungkan $abs
dengan $subtract
untuk menghitung besarnya perbedaan antara bidang a
dan b
:
db.data.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: {
$abs: {
$subtract: [ "$a", "$b" ]
}
}
}
}
]
)
Hasil:
{ "a" : 20, "b" : -20, "result" : 40 }