如何查询 mongo 集合将日期存储为某种格式的字符串?
How to query a mongo collection having stored dates as strings of a certain format?
我有一个 mongo 集合,该集合中的每个文档都有一个格式如下的日期字符串:
{
"etd": "15-Mar-21"
}
我只想查询和检索此集合中日期大于或等于 15-Mar-21.
的文档
谁能指导我如何编写 Mongo 查询?
使用聚合首先使用 $dateFromString
指令向所有具有转换日期的文档添加一个字段。
{
$addFields: {
date: {
$dateFromString: {
dateString: "$etd"
}
}
}
}
上面将向每个文档添加一个字段 date
(仅在查询期间),该字段将存储与其字符串表示形式相对应的 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")
}
}
}
])
我有一个 mongo 集合,该集合中的每个文档都有一个格式如下的日期字符串:
{
"etd": "15-Mar-21"
}
我只想查询和检索此集合中日期大于或等于 15-Mar-21.
的文档谁能指导我如何编写 Mongo 查询?
使用聚合首先使用 $dateFromString
指令向所有具有转换日期的文档添加一个字段。
{
$addFields: {
date: {
$dateFromString: {
dateString: "$etd"
}
}
}
}
上面将向每个文档添加一个字段 date
(仅在查询期间),该字段将存储与其字符串表示形式相对应的 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")
}
}
}
])