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

MongoDB $atanh

Di MongoDB, $atanh operator pipa agregasi mengembalikan arktangen hiperbolik (tangen hiperbolik terbalik) dari suatu nilai.

Nilai kembalian dalam radian.

$atanh menerima ekspresi valid apa pun yang menghasilkan angka antara -1 dan 1 .

$atanh operator diperkenalkan di MongoDB 4.2.

Contoh

Misalkan kita memiliki koleksi yang disebut test dengan dokumen berikut:

{ "_id" : 1, "data" : 0.5 }

Kita bisa menggunakan $atanh operator untuk mengembalikan arctangent hiperbolik dari data bidang:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        hyperbolicArctangent: { $atanh: "$data" }
      }
    }
  ]
)

Hasil:

{ "hyperbolicArctangent" : 0.5493061443340549 }

Konversikan ke Derajat

Seperti yang disebutkan, $atanh mengembalikan hasilnya dalam radian. Anda dapat menggunakan $radiansToDegrees operator jika Anda ingin hasilnya dalam derajat.

Contoh:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: { $atanh: "$data" },
        degrees: { $radiansToDegrees: { $atanh: "$data" } }
      }
    }
  ]
)

Hasil:

{ "radians" : 0.5493061443340549, "degrees" : 31.472923730945382 }

Dalam contoh ini, bidang pertama menyajikan hasil dalam radian, dan bidang kedua menyajikannya dalam derajat.

Nilai Desimal 128-Bit

Secara default, $atanh operator mengembalikan nilai sebagai double , tetapi juga dapat mengembalikan nilai sebagai desimal 128-bit selama ekspresi diselesaikan menjadi nilai desimal 128-bit.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

{ "_id" : 2, "data" : NumberDecimal("0.1301023541559787031443874490659") }

Mari kita jalankan $atanh operator terhadap dokumen itu:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

Hasil:

{ "result" : NumberDecimal("0.1308439651155512740523796431117568") }

Outputnya adalah desimal 128-bit.

Nilai Di Luar Rentang

$atanh operator menerima ekspresi valid apa pun yang menghasilkan angka antara -1 dan 1 . Nilai di luar rentang tersebut akan menyebabkan kesalahan.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

{ "_id" : 3, "data" : 2 }

Mari kita jalankan $atanh operator terhadap dokumen itu:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

Hasil:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $atanh to 2, value must in [-1,1]",
	"code" : 50989,
	"codeName" : "Location50989"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Nilai Null

Nilai nol mengembalikan null saat menggunakan $atanh operator.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

{ "_id" : 4, "data" : null }

Mari kita jalankan $atanh operator terhadap dokumen itu:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

Hasil:

{ "result" : null }

Kita dapat melihat bahwa hasilnya adalah null .

Nilai NaN

Jika argumen diselesaikan menjadi NaN$atanh mengembalikan NaN .

Contoh:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $atanh: 1 * "$data" }
      }
    }
  ]
)

Hasil:

{ "result" : NaN }

Bidang Tidak Ada

Jika $atanh operator diterapkan pada bidang yang tidak ada, null dikembalikan.

Contoh:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$name" }
      }
    }
  ]
)

Hasil:

{ "result" : null }

Tak Terbatas

Menyediakan Infinity atau -Infinity akan mengembalikan kesalahan di luar jangkauan (seperti yang kita lihat sebelumnya).

Misalkan kita menambahkan dokumen berikut ke koleksi:

{ "_id" : 5, "data" : Infinity }

Ayo jalankan $atanh lagi:

db.test.aggregate(
  [
    { $match: { _id: 5 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

Hasil:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $atanh to inf, value must in [-1,1]",
	"code" : 50989,
	"codeName" : "Location50989"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menangani kesalahan validasi Mongoose – di mana dan bagaimana?

  2. Cara Mengoptimalkan Kinerja MongoDB

  3. MongoDB sebagai penyimpanan file

  4. Agregasi MongoDB:Bagaimana cara mendapatkan jumlah catatan total?

  5. Panggil fungsi tersimpan di mongodb