我有在MongoDB中以UTC時間格式插入的數據。我想要根據時區轉換時間。在mongo查詢中是否有可能這樣做?Mongo查詢中的時區
回答
我們考慮您的文檔如下包含ISODate
:
db.collection.insert({"date":new Date()})
上面的查詢插入date
在ISODate
格式現在你想這個ISODate
轉換成給timeZone
。
假設您想將上述日期轉換爲Eastern Daylight Saving Time (EDT)
epoch time zone conertor然後offset
轉換爲14400 * 1000
。首先將ISODate
轉換爲timeStamp
,然後使用substract
EDT偏移in
時間戳and then convert
時間戳to
ISODate`再次。
檢查下面聚集的查詢:
db.collection.aggregate({
"$project": {
"timestamp": { //convert ISODate tom timestamp
"$subtract": [{
"$divide": [{
"$subtract": ["$date", new Date("1970-01-01")]
}, 1000]
}, {
"$mod": [{
"$divide": [{
"$subtract": ["$date", new Date("1970-01-01")]
}, 1000]
}, 1]
}]
}
}
}, {
"$project": {
"timeZoneTimeStamp": {
"$subtract": [{ //substract timestamp to given offset if offset will in postive then replace subtract to add
"$multiply": ["$timestamp", 1000]
}, 14400000]
}
}
}, {
"$project": {
"timeZoneTimeStamp": 1, //converted timeZoneTimeStamp if required
"_id": 0,
"newDate": { // newDate is converted timezone ISODate
"$add": [new Date(0), "$timeZoneTimeStamp"]
}
}
})
注: 在上述查詢轉換從ISODATE
到timeStamp
ref. here
也可以在這裏看到類似的答案:http://stackoverflow.com/a/31354088/404699 – steampowered
在情況下,如果日期不改變,例如恆定就像created_record_date那麼無論你需要哪個時區數據,你都應該預先計算並保存(如字符串)和同一個文檔,這樣你就不必在運行時運行巨大的處理,這可能會減慢執行時間。如果您有現有記錄並且想要將各種不同的時區數據與記錄一起存儲,請考慮運行Map-Reduct作業並分別更新文檔。 (讓我知道如果你需要的代碼)。但是,如果此日期字段可以根據業務邏輯進行更改,那麼它在運行時是明智的。這兩種技術都有其不同的使用案例及其優缺點。
- 3.6時區已添加$
- 1. 如何使用具有時區的時間戳查詢Mongo?
- 2. 在javascript中的Mongo查詢
- 3. 在python中的mongo查詢
- 4. Arraylist中的Mongo DB查詢
- 5. 更新中的Mongo查詢
- 6. mongo objectid'contains'查詢
- 7. Python Mongo:在查詢中使用'$或'mongo
- 8. 用Ruby/Javascript查詢Mongo組中的計數結果的區別
- 9. 在mongo的時間範圍內查詢
- 10. 如何在Mongo中查詢?
- 11. Mongo查詢在mongo shell中運行,但不在bash mongo中--eval?
- 12. 如何在運行fluent-mongo時獲得「真正的」mongo查詢
- 13. 調整Mongo查詢
- 14. 嘲諷mongo查詢
- 15. mongo慢查詢,cursor.refresh?
- 16. Mongo文檔查詢
- 17. 用mongo python查詢
- 18. Mongo查詢查找年數
- 19. MySQL時區查詢
- 20. 簡單的mongo查詢
- 21. 帶投影的Mongo查詢
- 22. 查詢的Mongo索引
- 23. 用spring mongo查詢oplog時間戳
- 24. 將mongo查詢翻譯成php mongo
- 25. Mongo:從多個查詢中查找
- 26. 從MySQL查詢生成Mongo查詢
- 27. Spring Mongo Group通過GroupBy查詢查詢
- 28. 用Spring Data查詢所有mongo查詢
- 29. 鋰電池中的Mongo查詢
- 30. 數組查詢中的Mongo數組
送你想提那些 – Aman
我的格式和格式在2015年6月25日搜索記錄。我有記錄在日期2015-06-24 24:17:51。在查詢時,此記錄A必須根據時區進行轉換並獲得列表。 – user3702039
是'timeZone'保存在文檔中還是外部傳遞的? – Yogesh