我收集了以下数据。当我使用db.collection.find({endDate: {$ne: new Date()}})
时,它还会显示当前日期为“ 2018年7月5日” 的结果。
{
"_id" : "GMDJcQMfs8j8EP9EE",
"endDate" : ISODate("2018-07-05T14:59:08.794+0000")
}
{
"_id" : "GMDJcQMfs12233",
"endDate" : ISODate("2020-02-21T00:00:00.000+0000")
}
{
"_id" : "GMDJerrr8j8EP9EE",
"endDate" : ISODate("2020-02-21T00:00:00.000+0000")
}
{
"_id" : "rrrJcQMfs8j8EP9EE",
"endDate" : ISODate("2020-02-21T00:00:00.000+0000")
}
答案 0 :(得分:0)
您可以通过将日期转换为字符串,添加具有相同格式的当前日期,将两者进行比较并过滤相同的结果来实现:
db.test1.aggregate(
[
{
$project: {
endDate:1,
endDateFormatted:{$dateToString: {date:"$endDate",format:"%Y-%m-%d"}},
current:{$dateToString: {date:new Date(),format:"%Y-%m-%d"}}
}
},
{
$project: { ab: {$cmp: ['$endDateFormatted','$current']},endDate:1}
},
{
$match: {ab:{$ne:0}}
},
{
$project: {
endDate:1
}
},
]
);
输出:
{
"_id" : "GMDJcQMfs12233",
"endDate" : ISODate("2020-02-21T01:00:00.000+0100")
}
{
"_id" : "GMDJerrr8j8EP9EE",
"endDate" : ISODate("2020-02-21T01:00:00.000+0100")
}
{
"_id" : "rrrJcQMfs8j8EP9EE",
"endDate" : ISODate("2020-02-21T01:00:00.000+0100")
}