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

MongoDB $sin

Di MongoDB, $sin operator pipa agregasi mengembalikan sinus dari nilai yang diukur dalam radian.

$sin menerima ekspresi valid apa pun yang menghasilkan angka.

$sin operator diperkenalkan di MongoDB 4.2.

Contoh

Misalkan kita memiliki koleksi yang disebut test dengan dokumen berikut:

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

Kita dapat menggunakan $sin operator untuk mengembalikan sinus dari data bidang:

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

Hasil:

{ "sine" : 0.9092974268256817 }

Konversikan ke Radian

Seperti yang disebutkan, $sin mengembalikan sinus 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,
        sine: { $degreesToRadians: { $sin: "$data" } }
      }
    }
  ]
)

Hasil:

{ "sine" : 0.015870233978020357 }

Nilai Desimal 128-Bit

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

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

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

Mari kita jalankan $sin operator terhadap dokumen itu:

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

Hasil:

{ "sine" : NumberDecimal("0.8476235356531703096519423201190329") }

Outputnya adalah desimal 128-bit.

Nilai Null

Nilai nol mengembalikan null saat menggunakan $sin operator.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

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

Mari kita jalankan $sin operator terhadap dokumen itu:

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

Hasil:

{ "sine" : null }

Kita dapat melihat bahwa hasilnya adalah null .

Nilai NaN

Jika argumen diselesaikan menjadi NaN , $sin mengembalikan NaN .

Contoh:

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

Hasil:

{ "sine" : NaN }

Bidang Tidak Ada

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

Contoh:

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

Hasil:

{ "sine" : null }

Tak Terbatas

Menyediakan Infinity atau -Infinity akan mengembalikan kesalahan di luar jangkauan.

Misalkan kita menambahkan dokumen berikut ke koleksi:

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

Mari kita jalankan $sin lagi:

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

Hasil:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $sin 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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendefinisikan metode dalam model Mongoose?

  2. $unwind array kosong

  3. MongoDB:keluaran 'id' bukan '_id'

  4. bagaimana saya bisa terhubung ke server mongo jarak jauh dari terminal Mac OS

  5. Bagaimana cara melanjutkan penyisipan setelah kesalahan kunci duplikat menggunakan PyMongo