如何查询将日期存储为某种格式的字符串的 mongo 集合?
Posted
技术标签:
【中文标题】如何查询将日期存储为某种格式的字符串的 mongo 集合?【英文标题】:How to query a mongo collection having stored dates as strings of a certain format? 【发布时间】:2021-06-12 08:49:16 【问题描述】:我有一个 mongo 集合,该集合中的每个文档都有一个格式如下的日期字符串:
"etd": "15-Mar-21"
我只想查询和检索此集合中日期大于或等于 15-Mar-21 的文档。
谁能指导我,我可以如何编写一个 Mongo 查询?
【问题讨论】:
【参考方案1】:使用聚合首先使用 $dateFromString
指令将字段添加到具有转换日期的所有文档。
$addFields:
date:
$dateFromString:
dateString: "$etd"
上面将为每个文档添加一个字段date
(仅在查询期间),该字段将存储与其字符串表示对应的日期对象。所以"15-Mar-21"
会变成ISODate("2021-03-15T00:00:00Z")
然后只需使用$match
来匹配date
大于给定日期的所有文档。所以这里是完整的聚合:
db.collection.aggregate([
$addFields:
date:
$dateFromString:
dateString: "$etd"
,
$match:
date:
$gt: ISODate("2021-03-15T00:00:00Z")
])
游乐场:https://mongoplayground.net/p/LSHcukh05jk
【讨论】:
以上是关于如何查询将日期存储为某种格式的字符串的 mongo 集合?的主要内容,如果未能解决你的问题,请参考以下文章
如何在mongo聚合不起作用的情况下将字符串转换为日期总是返回null?