javascript - 搜索时间戳大于X天的对象

标签 javascript mongodb date math

这周我已经把自己累坏了!我未能修复一个应该用一些基础数学来解决的错误。

我的 mongodb 数据库中有一些“事件”对象,它们是使用日期字段创建的,在预保存 Hook 中,我计算年份数字并将其放置到模型上。例如。

1 月 1 日 = 1

1 月 5 日 = 5

12 月 31 日 = 365

我的应用程序的用户可以搜索当前日期之前 X 天的事件。我的查询是这样的:

{
     day_number: { $gte: start_day, $lte: end_day}
}

现在已经到了年底了,有一个逻辑错误。

假设输入为 12 月 22 日至 1 月 2 日

我的查询正在进行:

{
    day_number: { $gte: 356, $lte: 2}
}

这当然不会返回任何结果,因为没有数字大于或等于 356 且小于或等于 2。

对于修复此问题有什么建议,而不涉及破坏虽然损坏但简单的查询吗?

最佳答案

您可以测试结束日期是否小于开始日期,然后调整结束日期,如下所示:

var start_day;
var end_day;
var numDaysInbetween = 0;
var day_number = {}

/* test 1 */
start_day = 50;
end_day = 55;

/* test 2 */
start_day = 356;
end_day = 2;

if (start_day > end_day) {
  end_day += 365;
}
day_number = { $gte: start_day, $lte: end_day };

alert(day_number.$lte - day_number.$gte);

关于javascript - 搜索时间戳大于X天的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291072/

相关文章:

r - 如何将数据从 mongodb 流式传输到 R?

swift - 从 "Start"时间计算 "End"时间

javascript - JavaScript 日期与前面的零不一致

javascript - To Do App 中的删除函数在 React 中返回为未定义错误

javascript - 将方法添加到字符串类

javascript - Socket.io 客户端未接收事件

javascript - 检查日期是否有效

javascript - 在选择器初始化并在 ('close' ) 事件上使用后,是否有某种方法可以在不同的脚本中获取 amsul pickadate/pickatime 对象?

mongodb - 替换 MongoDB 中数组中的嵌入文档

mongodb - 使用Logstash JDBC插件同步MongoDB和Elasticsearch时避免重复