【问题标题】:Date range query for Mongo document field that is an ISOString but not typed Date?Mongo文档字段的日期范围查询是ISOString但未键入日期?
【发布时间】:2015-04-18 22:57:13
【问题描述】:

假设我有一个包含文档(来自 JSON)的集合,其中包含一个带有日期信息的字段 - 作为 ISOString(但不是日期类型)。例如:

{
  foo: {
    completed: "2015-02-25T12:44:47.335Z"
  }
}

如何对此数据执行日期范围查询?据我所知,该字段被视为字符串。我也在使用猫鼬。我可以在架构中做些什么来适当地键入这个子字段吗?

【问题讨论】:

  • 您需要使用 ISODate 格式。请通过-stackoverflow.com/questions/8460160/…
  • 我已经进一步澄清了这个问题。数据已经有一个 ISOString 作为字符串。显而易见的答案是在添加到数据库之前对数据进行预处理。我想知道是否有更好的方法。

标签: mongodb mongoose database-schema isodate


【解决方案1】:

最好转换为Date 类型,但您仍然可以对 ISO 日期字符串执行排序和范围过滤。

db.test.find({'foo.completed': {
    $gt: '2015-01-25T12:44:47.335Z', 
    $lt: '2015-03-25T12:44:47.335Z'
}})

【讨论】:

  • 它确实有效。嘿,我实际上在另一个位置有类似的代码,完全忘记了它。感谢您的健全性检查。
  • 我在相同的条件下使用完全相同的查询,但它不起作用
猜你喜欢
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多