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

5 Cara Mendapatkan Milidetik dari Tanggal di MongoDB

Artikel ini menyajikan 5 cara untuk mengembalikan bagian milidetik dari objek Date di MongoDB.

Contoh Data

Misalkan kita memiliki koleksi yang disebut cats dengan dokumen sebagai berikut:

{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") }
{ "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:20.112Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:01.007Z") }

Contoh berikut menunjukkan berbagai opsi untuk mengembalikan bagian milidetik dari born bidang dokumen tersebut.

$millisecond Operator

$millisecond operator dirancang khusus untuk mengembalikan dokumen dengan porsi milidetik dari tanggal tertentu.

Kita dapat menjalankan kode berikut untuk mengembalikan bagian milidetik dari born bidang dalam dokumen di atas.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthMillisecond: { $millisecond: "$born" }
        }
    }
  ]
)

Hasil:

{ "birthMillisecond" : 123 }
{ "birthMillisecond" : 112 }
{ "birthMillisecond" : 7 }

$millisecond operator juga menerima timezone argumen.

Lihat MongoDB $millisecond untuk informasi dan contoh lebih lanjut.

$dateToString Operator

$dateToString operator mengonversi objek tanggal menjadi string menurut format yang ditentukan pengguna. Oleh karena itu, pengguna dapat menentukan bahwa hanya bagian milidetik yang dikembalikan jika diperlukan.

Ada penentu format untuk setiap bagian tanggal. %L penentu format mengembalikan bagian milidetik (3 digit, nol empuk).

Contoh:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          birthMillisecond: { $dateToString: { format: "%L", date: "$born" } }
       }
     }
   ]
)

Hasil:

{ "birthMillisecond" : "123" }
{ "birthMillisecond" : "112" }
{ "birthMillisecond" : "007" }

Lihat MongoDB $dateToString untuk informasi dan contoh lebih lanjut.

$dateToParts Operator

$dateToParts operator mengembalikan dokumen yang berisi bagian konstituen dari nilai Tanggal BSON yang diberikan sebagai properti individual. Properti yang dikembalikan adalah year , month , day , hour , minute , second dan millisecond .

Oleh karena itu, kami dapat menggunakan $dateToParts dalam satu tahap saluran, lalu tambahkan tahap saluran lain yang mengekstrak millisecond bagian.

Ini dia $dateToParts pengembalian untuk tiga dokumen kami:

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          dateParts: { $dateToParts: { date: "$born" } }
        }
    }
  ]
).pretty()

Hasil:

{
	"dateParts" : {
		"year" : 2021,
		"month" : 1,
		"day" : 3,
		"hour" : 23,
		"minute" : 30,
		"second" : 15,
		"millisecond" : 123
	}
}
{
	"dateParts" : {
		"year" : 2019,
		"month" : 12,
		"day" : 8,
		"hour" : 4,
		"minute" : 0,
		"second" : 20,
		"millisecond" : 112
	}
}
{
	"dateParts" : {
		"year" : 2020,
		"month" : 9,
		"day" : 24,
		"hour" : 10,
		"minute" : 45,
		"second" : 1,
		"millisecond" : 7
	}
}

Hasil ini kemudian dapat diteruskan ke tahap berikutnya dalam pipeline, dan oleh karena itu kami hanya dapat mengekstrak millisecond bidang di tahap berikutnya.

Inilah yang terjadi jika kita menambahkan proyeksi lain hanya untuk millisecond bidang:

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          dateParts: { $dateToParts: { date: "$born" } }
        }
    },
    {
      $project:
        {
          birthMillisecond: "$dateParts.millisecond"
        }
    }
  ]
)

Hasil:

{ "birthMillisecond" : 123 }
{ "birthMillisecond" : 112 }
{ "birthMillisecond" : 7 }

Jadi, setiap kali Anda menggunakan $dateToParts di saluran Anda, Anda akan memiliki akses ke millisecond bidang (dan bagian tanggal lainnya) di tahap berikutnya.

Lihat MongoDB $dateToParts untuk informasi dan contoh lebih lanjut.

The forEach() Metode

Anda dapat menggunakan cursor.forEach() untuk beralih melalui kursor, menggunakan metode JavaScript seperti getMilliseconds() atau getUTCMilliseconds() untuk mengembalikan hanya dalam milidetik.

db.cats.find().forEach(
  function(c) {
    print(
      c.born.getUTCMilliseconds()
      );
  }
);

Hasil:

123
112
7

getUTCSeconds() Metode JavaScript mengembalikan angka integer, antara 0 dan 999, yang mewakili bagian milidetik dari objek tanggal yang diberikan.

getMilliseconds() metode mengembalikannya dalam waktu lokal.

Anda mungkin juga memperhatikan bahwa opsi sebelumnya mengembalikan seluruh dokumen yang berisi pasangan nama/nilai, sedangkan opsi ini hanya mengembalikan nilai milidetik yang sebenarnya, dan bukan keseluruhan dokumen.

map() Metode

cursor.map() metode menerapkan fungsi ke setiap dokumen yang dikunjungi oleh kursor dan menggabungkan nilai ke dalam array.

Contoh:

db.cats.find().map(
  function(c) {
    c = c.born.getUTCMilliseconds();
    return c;
  }
);

Hasil:

[ 123, 112, 7 ]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bisakah saya meminta MongoDB ObjectId berdasarkan tanggal?

  2. Bagaimana cara mendorong notifikasi dengan angular.js?

  3. Desain Skema MongoDB:Selalu Ada Skema

  4. MongoDB – Bawa Sertifikat SSL Anda Sendiri

  5. Temukan luwak () tidak mengembalikan hasil