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

Agregat Grup berdasarkan Tanggal dengan Offset Musim Panas

Konsep dasar di sini adalah untuk membuat kueri Anda "sadar" kapan "penghematan siang hari" "dimulai" dan "berakhir" untuk periode kueri yang diberikan dan cukup berikan tes ini ke $cond untuk menentukan "offset" mana yang akan digunakan:

db.collection.aggregate([
    { "$group": {
       "_id": {
           "$week": {
               "$add": [
                  "$Timestamp",
                  { "$cond": [
                      { "$and": [
                          { "$gte": [
                             { "$dayOfyear": "$Timestamp" },
                             daylightSavingsStartDay 
                          ]},
                          { "$lt": [ 
                             { "$dayOfYear": "$Timestamp" },
                             daylightSavingsEndDay
                          ]}
                      ]},
                      daylightSavingsOffset,
                      normalOffset
                  ]}
               ]
           }
       },
       "min": { "$min": "$Timestamp" }
    }}
])

Jadi Anda dapat membuatnya sedikit lebih rumit ketika mencakup beberapa tahun, tetapi itu masih merupakan prinsip dasarnya. Di belahan bumi selatan Anda selalu mencakup satu tahun sehingga setiap kondisi akan menjadi "rentang" dari "awal" hingga "akhir tahun" dan "awal tahun" hingga "akhir". Oleh karena itu $or dengan $and inner bagian dalam dalam "rentang" yang ditunjukkan operator.

Jika Anda memiliki nilai yang berbeda untuk diterapkan, maka deteksi kapan Anda "harus" memilih salah satu dan kemudian terapkan menggunakan $cond .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menggabungkan beberapa bidang dalam koleksi?

  2. Cara membandingkan skrip mongodb/mongoid, untuk membandingkan dua teknik kueri yang berbeda

  3. pembaruan asli di Sails with Mongo tidak berfungsi dengan ObjectId

  4. Manajemen AWS:Cara Menghemat 30% Biaya Hosting MongoDB Anda

  5. Luwak:mpromise (perpustakaan janji default luwak) tidak digunakan lagi