簡體   English   中英

按時間搜索-MongoDB / NodeJS

[英]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:00Ztime ,查詢應該會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM