我想获取“ FECHA_FIN”字段大于或等于今天的日期的记录。
这是我的数据示例:
但有以下查询:
db.getCollection('susp_programadas').find( {"FECHA_FIN":{ $gte: new Date("YYYY-mm-dd") }} )
答案 0 :(得分:0)
您可以将日期转换为ISO日期并进行查询。由于您将日期存储为字符串,因此mongo不知道如何在不转换的情况下针对ISO日期查询日期。
如果您将日期存储在mongo中作为默认的ISO日期,那么您可以轻松做到这一点:
db.getCollection('susp_programadas').find({"FECHA_FIN":{$gte: new Date()}})
这就是您现在可以执行的操作:
db.getCollection('susp_programadas').aggregate([
{
$project: {
date: { $dateFromString: { dateString: '$FECHA_FIN' }}
}
},
{ $match: { date: { $gte: new Date() }}}
])
您可以在带有$match
的聚合查询中使用$dateFromString,以获取所需的结果。请注意,$ dateFromString仅在 MongoDB 3.6版及更高版本中可用。
如果无法将数据转换为ISODate或升级数据库,则还可以考虑通过$where
的另一种解决方案:
db.getCollection('susp_programadas').find({
$where: function(){
return new Date(this.FECHA_FIN) > Date.now()
}
})
但是,该解决方案的缺点是$where
不能使用索引,因此请记住这一点。