MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tổng hợp nhóm theo ngày với bù đắp tiết kiệm ánh sáng ban ngày

Khái niệm cơ bản ở đây là làm cho truy vấn của bạn "biết" thời điểm "tiết kiệm ánh sáng ban ngày" cả "bắt đầu" và "kết thúc" trong khoảng thời gian truy vấn nhất định và chỉ cần cung cấp thử nghiệm này cho $cond để xác định "bù đắp" nào sẽ sử dụng:

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

Vì vậy, bạn có thể làm cho điều đó phức tạp hơn một chút khi trải qua vài năm, nhưng nó vẫn là nguyên tắc cơ bản. Ở Nam bán cầu, bạn luôn luôn kéo dài một năm nên mỗi điều kiện sẽ là một "phạm vi" từ "bắt đầu" đến "cuối năm" và "đầu năm" đến "kết thúc". Do đó, một $or với $and bên trong trong các toán tử "phạm vi" được trình bày.

Nếu bạn có các giá trị khác nhau để áp dụng, hãy phát hiện khi nào bạn "nên" chọn một trong hai và sau đó áp dụng bằng cách sử dụng $cond .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kết nối lại với MongoDB một cách đáng tin cậy

  2. Truy vấn theo kiểu mảng - MongoDB

  3. cách cập nhật nhiều tài liệu với các giá trị khác nhau

  4. Mongo $ tồn tại truy vấn không trả về tài liệu chính xác

  5. Kiểm tra xem trình điều khiển PHP MongoDB đã được cài đặt chưa