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

MongoDB $toDate

Di MongoDB, $toDate operator agregasi mengonversi nilai menjadi tanggal

$toDate mengambil ekspresi yang valid. Jika ekspresi tidak dapat dikonversi ke tanggal, itu akan mengembalikan kesalahan. Jika ekspresinya null atau hilang, ia mengembalikan null .

Contoh

Misalkan kita memiliki koleksi yang disebut samples dengan dokumen berikut:

{
	"_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"),
	"double" : 1613372035500.75,
	"decimal" : NumberDecimal("1613372035500.75"),
	"long" : NumberLong("1613372035500"),
	"string" : "2021-02-15 06:53:55"
}

Kita dapat menggunakan kueri berikut untuk mengembalikan masing-masing nilai tersebut sebagai Tanggal.

db.samples.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          "ObjectId": { $toDate: "$_id" },
          "double": { $toDate: "$double" },
          "decimal": { $toDate: "$decimal" },
          "long": { $toDate: "$long" },
          "string": { $toDate: "$string" }
        }
    }
  ]
).pretty()

Hasil:

{
	"ObjectId" : ISODate("2021-01-19T05:33:16Z"),
	"double" : ISODate("2021-02-15T06:53:55.500Z"),
	"decimal" : ISODate("2021-02-15T06:53:55.500Z"),
	"long" : ISODate("2021-02-15T06:53:55.500Z"),
	"string" : ISODate("2021-02-15T06:53:55Z")
}

Seperti yang diharapkan, semua bidang dikembalikan dengan nilai terkait yang dikonversi ke nilai Tanggal.

Anda mungkin memperhatikan bahwa bidang ObjectId mengembalikan tanggal yang berbeda dengan yang lain. Ini karena _id nilai bidang mencerminkan tanggal dokumen dibuat, sedangkan tanggal lainnya hanyalah tanggal arbitrer yang dibuat oleh saya. Selengkapnya tentang ObjectId di bawah ini.

Jenis Masukan

$toDate operator menerima jenis input berikut:

  • Ganda
  • Desimal
  • Panjang
  • String (harus berupa string tanggal yang valid)
  • Id Objek

Selengkapnya tentang ini di bawah.

Tipe Numerik

Saat menggunakan tipe numerik (Ganda, Desimal, dan Panjang), $toDate mengembalikan tanggal yang sesuai dengan jumlah milidetik yang diwakili oleh nilai. Untuk Double dan Desimal, ini adalah nilai yang terpotong. $toDate operator menginterpretasikan nilai numerik sebagai berikut:

  • Nilai positif sesuai dengan jumlah milidetik sejak 1 Januari 1970.
  • Nilai negatif sesuai dengan jumlah milidetik sebelum 1 Januari 1970.

Jenis String

Saat menggunakan tipe string, string harus berupa string tanggal yang valid. Misalnya:

  • "2021-02-15"
  • "15 February 2021"
  • "2021-02-15 06:53:55"
  • "2021-02-15 06:53:55+1100"

Anda tidak dapat menggunakan tanggal yang tidak lengkap atau nilai yang tidak valid seperti "Monday" , "March" , "2020" , dll.

ObjectId

Nilai ObjectId adalah nilai heksadesimal 12 byte yang terdiri dari:

  • Nilai cap waktu 4 byte, yang mewakili pembuatan ObjectId, diukur dalam detik sejak zaman Unix.
  • 5 byte adalah nilai acak
  • Penghitung pertambahan 3 byte, diinisialisasi ke nilai acak.

$toDate operator mengembalikan bagian cap waktu sebagai Tanggal.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. SSL MongoDB dengan sertifikat yang ditandatangani sendiri di C#

  2. Statistik Visual untuk Server MongoDB Anda

  3. Hapus bidang yang ditemukan di array mongodb mana pun

  4. MongoDB dot (.) dalam nama kunci

  5. MongoDB $strcasecmp