mongodb - MongoDB 中的 ISO8601 日期字符串(索引和查询)

标签 mongodb date

我在 MongoDB 中有一个文档集合,它们都有一个“日期”字段,它是一个 ISO8601 格式的日期字符串(即由 moment.js format() 方法创建)。

我希望能够针对此集合高效地运行查询,以表达“日期在 A 之后且 B 之前的文档”(即某个日期范围内的文档)的情绪。

我应该将日期存储为 ISO-8601 字符串以外的其他内容吗?根据这个答案,针对我上述要求的 MongoDB 查询操作会是什么样子?我设想的是这样的:

{$and: [
  {date: {$gt: "2017-05-02T03:15:22-04:00"}},
  {date: {$lt: "2017-06-02T03:15:22-04:00"}},
]}

这“有效”吗?我需要一些有说服力的东西。

最佳答案

您肯定想使用内置的 datedate 字段上包含索引且not 字符串的数据类型。与比较 64 位整数的日期相比,字符串比较会慢得要命。

就查询而言,请查看此处的答案:

return query based on date

关于mongodb - MongoDB 中的 ISO8601 日期字符串(索引和查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46939430/

相关文章:

javascript - 为什么 moment.js diff 方法返回 NaN?

javascript - 在 javascript Date 中添加或减去时区差异

mysql - 如何计算有多少 worker 正在休假 - mysql

javascript - 如何用更少的行数快速制作多个嵌套属性对象?

mongodb - Papa Parse 用引号呈现的第一个标题字段

MongoDB:设置 Windows 服务

java - JDBC SQL 准备好的语句调用函数但出现表达式错误

php - 如何使用 Codeigniter db->insert() 方法在 MySQL 中添加日期

java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME 无法解析时区名称

node.js - Mongodb:第一次连接时无法连接到服务器