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

MongoDB $acosh

Di MongoDB, $acosh operator pipeline agregasi mengembalikan arccosine hiperbolik (kosinus hiperbolik terbalik) dari suatu nilai, diukur dalam radian.

$acosh menerima ekspresi valid apa pun yang menghasilkan angka antara 1 dan +Infinity .

$acosh operator diperkenalkan di MongoDB 4.2.

Contoh

Misalkan kita memiliki koleksi yang disebut test dengan dokumen berikut:

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

Kita dapat menggunakan $acosh operator untuk mengembalikan arccosine hiperbolik dari data bidang:

db.test.aggregate(
  [
    { $project: { 
        _id: 0,
        hyperbolicArccosine: { $acosh: "$data" }
      }
    }
  ]
)

Hasil:

{ "hyperbolicArccosine" : 1.762747174039086 }

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

Konversikan ke Derajat

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

Contoh:

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

Hasil:

{ "radians" : 1.762747174039086, "degrees" : 100.99797342105244 }

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

Nilai Di Luar Rentang

Memberikan nilai di luar jangkauan ke $acosh akan menghasilkan kesalahan.

Misalkan kita menambahkan dokumen berikut ke koleksi:

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

Sekarang mari kita jalankan $acosh terhadap data bidang:

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

Hasil:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $acosh to 0, value must in [1,inf]",
	"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

Seperti yang ditunjukkan oleh pesan kesalahan, nilainya harus di antara 1 dan +Infinity .

Nilai Null

Nilai nol mengembalikan null saat menggunakan $acosh operator.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

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

Mari kita jalankan $acos operator terhadap dokumen itu:

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

Hasil:

{ "result" : null }

Kita dapat melihat bahwa hasilnya adalah null .

Nilai NaN

Jika argumen diselesaikan menjadi NaN , $acosh mengembalikan NaN .

Contoh:

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

Hasil:

{ "result" : NaN }

Dalam hal ini saya mencoba mengalikan angka dengan string, yang menghasilkan NaN dikembalikan.

Tak Terbatas

Jika argumen diselesaikan menjadi Infinity , $acosh operator mengembalikan Infinity .

Contoh:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $acosh: Infinity }
      }
    }
  ]
)

Hasil:

{ "result" : Infinity }

Namun, -Infinity akan mengembalikan kesalahan.

Bidang Tidak Ada

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

Contoh:

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

Hasil:

{ "result" : null }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara memasukkan HTML ke Mongodb?

  2. Kiat untuk Menyimpan Cadangan MongoDB di Cloud

  3. Hapus objek dari array bersarang dengan $pull dan $[identifier] (mongoDB 3.6)

  4. Setel konverter MongoDb secara terprogram

  5. Memvalidasi keunikan dokumen yang disematkan yang dicakup oleh induknya di luwak