我有MongoDB聚合管道,它应该与当前日期进行比较,但时间为“T00:00:00.000+00:00”。所以,我尝试做下面的操作,第二阶段是给我正确的日期“<Current_Date>T00:00:00.000+00:00”。但是$lt
仍然没有返回任何数据。
[
{
$addFields: {
formattedDate: {
$dateToString: {
format: '%Y-%m-%d',
date: '$$NOW'
}
}
}
},
{
$set: {
formattedDate: {
$toDate: '$formattedDate'
}
}
},
{
$match: {
effectiveFrom: {
$lt: '$formattedDate'
},
createdDate: {
$lt: '$formattedDate'
}
}
}
]
1条答案
按热度按时间6yt4nkrj1#
请注意,除非使用
$expr
运算符,否则无法比较文档中的两个字段。另外,如果您认为包含
effectiveFrom:2023-09-22T00:00:00.000+00:00
的文档将包含在结果中,则应该使用$lte
而不是$lt
。而你尝试获取当前日期而不带时间的方式可以用
$dateTrunc
运算符来简化。Demo @ Mongo Playground