[英]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.