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 }