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

grup pymongo berdasarkan tanggal waktu

Ya. Anda dapat menggunakan Operator Tanggal dengan $substr dan $concat untuk mengikat semuanya.

db.test.aggregate([
    {"$group": {
        "_id" : { "$concat": [
            {"$substr": [{"$year": "$date"}, 0, 4 ]},
            "-",
            {"$substr": [{"$month": "$date"}, 0, 2 ]},
            "-",
            {"$substr": [{"$dayOfMonth": "$date"}, 0, 2 ]},
        ]},
        "count": {"$sum": 1 }
     }},
     {"$sort": { "_id": 1 }}
])

Anda dapat menggunakan operator tanggal saja dan membuat dokumen seperti pada:

"day": { 
    "year": {"$year": "$date" },
   "month": {"$month": "$date"}, 
   "day": {"$dayOfYear": "$date"}
}

Itu bekerja dengan baik. Tapi ini memberi Anda string yang bagus. Ini memanfaatkan fakta bahwa $substr akan dilemparkan dari integer ke string. Jika itu pernah ditambahkan ke dokumentasi.

Lihat Operator Tanggal dokumentasi untuk penggunaan pada pembagian waktu lain yang dapat digunakan pada tanggal.

Lebih baik lagi, gunakan matematika tanggal untuk mengembalikan Tanggal BSON:

import datetime

db.test.aggregate([
    { "$group": {
        "_id": {
            "$add": [
               { "$subtract": [
                   { "$subtract": [ "$date", datetime.datetime.utcfromtimestamp(0) ] },
                   { "$mod": [
                       { "$subtract": [ "$date", datetime.datetime.utcfromtimestamp(0) ] },
                       1000 * 60 * 60 * 24
                   ]}
               ]},
               datetime.datetime.utcfromtimestamp(0)
           ]
        },
        "count": { "$sum": 1 }
    }},
    { "$sort": { "_id": 1 } }
])

Di sini datetime.datetime.utcfromtimestamp(0) akan dimasukkan ke dalam pipa sebagai Tanggal BSON yang mewakili "zaman". Saat Anda $subtract satu Tanggal BSON dari yang lain perbedaan dalam milidetik dikembalikan. Ini memungkinkan Anda untuk "membulatkan" tanggal ke hari ini dengan mengurangi lagi $mod hasil untuk mendapatkan sisa perbedaan milidetik dari satu hari.

Hal yang sama berlaku untuk $add di mana "menambahkan" Tanggal BSON ke nilai numerik akan menghasilkan Tanggal BSON.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Baca dari Kinesis memberikan catatan kosong saat dijalankan menggunakan nomor urut atau stempel waktu sebelumnya

  2. Dapatkan tanggal ISO yang berbeda berdasarkan hari, bulan, tahun

  3. Bidang tidak dikenal:kesalahan 'ntorreturn' di documenDB

  4. apa format arsip mongodb?

  5. MongoDB :Perbarui semantik Pengubah dari $ tidak disetel