我正在开发一个Intranet Web应用程序。此应用程序在美国,欧洲和亚洲使用。
从用户浏览器中的datepicker小部件中,我捕获日期,然后将其传递给我在美国服务器上运行的应用程序。
new Date().toISOString();
我正在使用JavaScript Date Object并将日期转换为UTC格式,然后将其传递到服务器以便存储在Mongo DB中。
存储空间正常。
然而,我接下来假设在捕获的时间前一小时向欧洲和亚洲的用户发送电子邮件提醒。
我对如何执行此操作感到困惑。
Mongo中的日期采用UTC格式。如何从数据库中检索所有文档,使其时间接近一小时(这样我就可以发出一个会触发提醒电子邮件的事件)。
为此写一个什么样的查询?
答案 0 :(得分:0)
我不知道如何编写Mongo DB的实际查询,但这可能会有所帮助。
你可以:
This post显示了如何使用moment.js和时区组件
答案 1 :(得分:0)
不确定您的寻求方式,但有两种选择。
您可以使用>进行检索&安培;&安培; < =基于crontab建议。
var now = ISODate("2014-01-16T01:00:00.000Z");
var houragp = now - 1hr
db.collection.find({ "yourdate" : { $gt : hourago , $lte : now } })
或者查看将日期缩减为组件的this aggregation。请注意,$ yourdate键的$符号是一个聚合习语。
db.sales.aggregate(
[
{
$project:
{
year: { $year: "$yourdate" },
month: { $month: "$yourdate" },
day: { $dayOfMonth: "$yourdate" },
hour: { $hour: "$yourdate" },
minutes: { $minute: "$yourdate" },
seconds: { $second: "$yourdate" },
milliseconds: { $millisecond: "$yourdate" },
dayOfYear: { $dayOfYear: "$yourdate" },
dayOfWeek: { $dayOfWeek: "$yourdate" }
}
}
]
)
您的情况可能只是需要。
db.sales.aggregate(
[
{
$project:
{
hour: { $hour: "$yourdate" },
}
}
]
)