MongoDB日期型別查詢

jmcui發表於2018-04-03

 

一、前言

MongoDB 裡面的日期型別是沒有時區概念的,預設儲存的是 ISODate(“2018-04-02T13:19:16.418Z”) 這種格式的零時區時間,比北京時間晚了八個小時。

工作中遇到了一個問題,怎麼查詢比當前時間小30秒之內的文件記錄呢?

時區問題有關係嗎?日期型別要怎麼比較?怎麼表示當前時間呢?日期要怎麼實現加減呢?

二、方案

1、時區問題

其實時區問題並不是一個太需要關注的問題,因為MongoDB 提供了一個Javascript shell 視窗,支援 js 的語法。進行日期型別比較的時候,MongoDB 會自動處理 js 日期型別 和 MongoDB 日期型別間的時區問題。

2、怎麼表示當前時間

既然我們已經有了 Javascript shell 視窗,那麼表示當前時間不是一件輕而易舉的事情了嗎?直接一個 new Date() 就搞定了!

3、實現日期加減

有了 js 語法,日期的加減也不是特別難想了吧?

1     var now = new Date();
2     now.setSeconds(now.getSeconds() - 30);

4、實現查詢

萬事俱備,只欠東風。讓我們來看看,最後的MongoDB查詢是怎麼樣的吧?

1      var now = new Date();
2      now.setSeconds(now.getSeconds() - 30);
3      db.driverLocation.find({"uploadTime":{"$gte":now}}).sort({"uploadTime":-1});


相關文章