MongoDB: 除了聚合中的 ISODate 之外,还有其他方法可以按日期匹配吗?
MongoDB: Is there another way to match by date other than ISODate in an aggregation?
我的问题比较简单。我有一组文档,看起来像这样
{
_id:"61f52b609f97a100092842f2"
timestampISO:2022-01-29T11:56:14.000+00:00
}
timestampISO 是日期类型。
有没有办法在不使用 ISODate("...") 的情况下按日期进行匹配,如 answer 所示?我尽量不使用 ISODate(''),因为我实际上想将管道保存为 Mongo 中的字符串,但这现在并不重要。
我想要这样的比赛
$match: {
timestampISO: {
$gte: {
$dateFromString: {
dateString: '2022-01-01T11:56:14.000+00:00',
}
},
$lte: {
$dateFromString: {
dateString: '2022-01-29T11:56:14.000+00:00',
}
},
}
}
这是行不通的。似乎 ISODate() 似乎是唯一的方法?这是正确的吗?
感谢您的宝贵时间。
ISODate()
只是 Mongo shell 中 new Date()
.
的别名
{ $dateFromString: { dateString: '2022-01-01T11:56:14.000+00:00' } }
大致相同,但是您必须使用
{
$match: {
$expr: {
$gte: [
"$timestampISO",
{ $dateFromString: { dateString: '2022-01-01T11:56:14+00:00' } }
]
}
}
}
或者更简单一点:
{ $match:
{$expr: {$gte: ["$timestampISO", { $toDate: '2022-01-01T11:56:14.000+00:00' } ] }}
}
我的问题比较简单。我有一组文档,看起来像这样
{
_id:"61f52b609f97a100092842f2"
timestampISO:2022-01-29T11:56:14.000+00:00
}
timestampISO 是日期类型。
有没有办法在不使用 ISODate("...") 的情况下按日期进行匹配,如 answer 所示?我尽量不使用 ISODate(''),因为我实际上想将管道保存为 Mongo 中的字符串,但这现在并不重要。
我想要这样的比赛
$match: {
timestampISO: {
$gte: {
$dateFromString: {
dateString: '2022-01-01T11:56:14.000+00:00',
}
},
$lte: {
$dateFromString: {
dateString: '2022-01-29T11:56:14.000+00:00',
}
},
}
}
这是行不通的。似乎 ISODate() 似乎是唯一的方法?这是正确的吗?
感谢您的宝贵时间。
ISODate()
只是 Mongo shell 中 new Date()
.
{ $dateFromString: { dateString: '2022-01-01T11:56:14.000+00:00' } }
大致相同,但是您必须使用
{
$match: {
$expr: {
$gte: [
"$timestampISO",
{ $dateFromString: { dateString: '2022-01-01T11:56:14+00:00' } }
]
}
}
}
或者更简单一点:
{ $match:
{$expr: {$gte: ["$timestampISO", { $toDate: '2022-01-01T11:56:14.000+00:00' } ] }}
}