MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB $abs

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 }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tutorial MongoDB untuk Pemula (Panduan Lengkap) – Pelajari MongoDB dalam 15 Menit

  2. Bisakah saya mengubah indeks yang ada di MongoDB tanpa menghapusnya?

  3. Setel Batas Waktu Mongo di Boot Musim Semi

  4. Pembaca Mongo C# JSON mengharapkan nilai tetapi menemukan 'replSetGetStatus'

  5. mongodb:kueri untuk periode waktu antara dua bidang tanggal