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

MongoDb Bagaimana mengelompokkan berdasarkan bulan dan tahun dari string

Anda tidak dapat menggunakan operator agregasi tanggal pada hal lain yang merupakan Date objek itu sendiri. Pilihan terbaik Anda adalah mengonversi "string" ini menjadi Date objek sehingga Anda dapat melakukan kueri dengan benar dalam operasi ini dan yang akan datang.

Yang mengatakan, jika "string" Anda selalu memiliki struktur yang sama maka ada cara untuk melakukan ini dengan kerangka agregasi peralatan. Ini membutuhkan banyak pemikiran manipulasi yang tidak menjadikan ini pendekatan yang "optimal" untuk menangani masalah. Tetapi dengan struktur set "digit ganda" dan pembatas yang konsisten, ini dimungkinkan dengan $substr operator:

db.collection.aggregate([
   { "$group": {
       "_id": {
           "year": { "$substr": [ "$dateStr", 7, 4 ] },
           "month": { "$substr": [ "$dateStr", 4, 2 ] }
       },
       "count": { "$sum": 1 }
   }}
])

Jadi casting JavaScript tidak berfungsi di dalam kerangka agregasi. Anda selalu dapat "memberi masukan" ke saluran pipa berdasarkan evaluasi "kode klien", tetapi proses agregasi itu sendiri tidak mengevaluasi kode apa pun. Sama seperti mesin kueri dasar, ini semua didasarkan pada implementasi "struktur data" yang menggunakan instruksi "operator asli" untuk melakukan pekerjaan.

Anda tidak dapat mengonversi string menjadi tanggal dalam alur agregasi. Anda harus bekerja dengan BSON Date asli objek, tetapi Anda dapat melakukannya dengan string jika ada format konsisten yang dapat Anda sajikan dalam "urutan leksikal".

Saya masih menyarankan agar Anda mengonversinya ke BSON Dates SECEPAT MUNGKIN. Dan berhati-hatilah bahwa nilai "ISODate" atau UTC dibuat dengan bentuk string yang berbeda. yaitu:

new Date("2020-01-07")

Berada dalam format "yyyy-mm-dd". Setidaknya untuk permintaan JavaScript.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Masalah Zona Waktu Node.js dan MongoDB UTC tidak dikonversi dengan benar oleh driver?

  2. Jelaskan Seperti Saya Lima:Formulir dengan Bidang Teks dan Gambar> Rute> Pengontrol> Tulis ke Dokumen MongoDB - GridFS pergi ke mana?

  3. Tidak dapat membuat mongodump cadangan dengan --db. Otentikasi gagal

  4. Pembaruan Koleksi MongoDB:inisialisasi dokumen dengan nilai default

  5. Populate() ref bersarang di array objek