[英]Searching by Time - MongoDB / NodeJS
我有以下時間的文檔:
"time" : ISODate("2013-12-31T03:00:00Z")
我目前正在嘗試使用帶有Node.JS驅動程序的MongoDB查詢來查找此文檔。
var time = new Date(2013,11,31,3,0,0,0);
該日期使用console.log()打印如下
Tue Dec 31 2013 03:00:00 GMT-0500 (EST)
當我嘗試使用標准collection.findOne查找該文檔時(我很肯定查詢本身不是問題,而是時間戳),它找不到該文檔。 Mongo Shell顯示該文檔存在。 我如何格式化時間錯誤?
編輯:我也會在查詢中添加。
collection.findOne(
{
"time" : time},
{"_id" : 0},
function(err, items){
if (err){
throw err;
}
console.log(err);
console.log(items);
res.send(items);
});
您有時區問題。 您要查找的時間戳是2013-12-31T03:00:00Z
,后綴Z
表示“零時區偏移”。 但是您正在使用的new Date
的版本:
var time = new Date(2013,11,31,3,0,0,0);
解釋當前時區中的所有這些值。 如果我們查看您的console.log
輸出:
Tue Dec 31 2013 03:00:00 GMT-0500 (EST)
我們可以看到您處於EST時區,您的time
在EST是03:00
,而在UTC是03:00
。
可能最簡單的方法是在創建Date
實例之前使用Date.UTC
將組件轉換為UTC:
var time = new Date(Date.UTC(2013,11,31,3,0,0,0));
現在您應該有2013-12-31T03:00:00Z
的time
,查詢應該會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.