簡體   English   中英

查詢mongodb以獲取最近30分鍾內創建的文檔

[英]Query mongodb to get documents created within last 30 minutes

我在中部歐洲夏令時間(CEST)15:08,將文檔添加到集合中。 new Schema模型中,我傳遞了timestamps: true 它的createdAt不正確,還早兩個小時:

createdAt:2019-08-21 13:08:39.219

為什么? 另外, .219到底是什么意思? 最后,我如何查詢此集合以獲取過去30分鍾內的createdAt中的每一個?

const c = await Collection.find({
    createdAt: {
        $gte: new Date() // ???
    }
});

我將答案與評論結合在一起,並嘗試了以下操作:

const d = new Date(
    new Date().getTime() + new Date().getTimezoneOffset() * 60000 - 30 * 60000
);
const c = await Collection.find({
    createdAt: { $gte: d }
});

但它似乎無法正常工作。 我在美國東部標准時間13:47 CEST的15:47 CEST執行此代碼,因此最早的文檔應來自13:17,但得到的結果為"createdAt": "2019-08-21T12:43:38.395Z",

您可以創建一個忽略瀏覽器時區的日期:

function newDateTZSafe(){
    var now = new Date();
    return new Date(now.getTime() + now.getTimezoneOffset() * 60000);
}

或者,如果您嚴重依賴日期,請使用moment.js

**Try this query**
const c = await Collection.find({
    createdAt: {
        "$gte" : new Date(ISODate().getTime() - 1000 * 60 * 30) }
    }
});

暫無
暫無

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

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