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

MongoDB $tan

Di MongoDB, $tan operator pipeline agregasi menampilkan singgung nilai yang diukur dalam radian.

$tan menerima ekspresi valid apa pun yang menghasilkan angka.

$tan operator diperkenalkan di MongoDB 4.2.

Contoh

Misalkan kita memiliki koleksi yang disebut test dengan dokumen berikut:

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

Kita bisa menggunakan $tan operator untuk mengembalikan tangen dari data bidang:

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

Hasil:

{ "tangent" : -2.185039863261519 }

Konversikan ke Radian

Seperti yang disebutkan, $tan mengembalikan tangen dari nilai yang diukur dalam radian. Jika nilainya dalam derajat, Anda dapat menggunakan $degreesToRadians operator untuk mengubahnya menjadi radian.

Contoh:

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

Hasil:

{ "tangent" : -0.038136139901240186 }

Nilai Desimal 128-Bit

Secara default, $tan 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("2.1301023541559787031443874490659") }

Mari kita jalankan $tan operator terhadap dokumen itu:

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

Hasil:

{ "tangent" : NumberDecimal("-1.597486946407534452195921861435753") }

Outputnya adalah desimal 128-bit.

Nilai Null

Nilai nol mengembalikan null saat menggunakan $tan operator.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

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

Mari kita jalankan $tan operator terhadap dokumen itu:

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

Hasil:

{ "result" : null }

Kita dapat melihat bahwa hasilnya adalah null .

Nilai NaN

Jika argumen diselesaikan menjadi NaN$tan mengembalikan NaN .

Contoh:

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

Hasil:

{ "result" : NaN }

Bidang Tidak Ada

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

Contoh:

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

Hasil:

{ "result" : null }

Tak Terbatas

Menyediakan Infinity atau -Infinity mengembalikan kesalahan.

Misalkan kita menambahkan dokumen berikut ke koleksi:

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

Ayo terapkan $tan ke dokumen ini:

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 4, 5 ] } } },
    { $project: { 
        tangent: { $tan: "$data" }
      }
    }
  ]
)

Hasil:

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

Dalam hal ini, $tan hanya sampai sejauh dokumen pertama (dokumen 4) sebelum terjadi kesalahan. Kami mengetahui hal ini karena pesan kesalahan menunjukkan bahwa ia mencoba menerapkan $tan ke inf (Infinity ).

Jika kami menghapus dokumen 4 dari filter kueri, kami dapat melihat bahwa dokumen tersebut berkembang menjadi dokumen 5 dan mengembalikan kesalahan yang sama.

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 5 ] } } },
    { $project: { 
        tangent: { $tan: "$data" }
      }
    }
  ]
)

Hasil:

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

Kali ini kesalahan menunjukkan bahwa ia mencoba menerapkan $tan ke -inf (-Infinity ).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hashing kata sandi luwak

  2. Mongoose/node.js cara menemukan, mengisi, melakukan sesuatu, 'mengurangi populasi', dan memperbarui

  3. Temukan dokumen dengan larik yang tidak berisi nilai tertentu

  4. Parsing string tanggal ISO8601 hingga saat ini dengan Zona Waktu UTC

  5. Cara mengatur mongod.conf bind_ip dengan beberapa alamat ip