我无法确定当前日期之后的日期

时间:2018-11-08 18:26:35

标签: mongodb

我想获取“ FECHA_FIN”字段大于或等于今天的日期的记录。

这是我的数据示例:

enter image description here

但有以下查询:

db.getCollection('susp_programadas').find( {"FECHA_FIN":{ $gte: new Date("YYYY-mm-dd") }}  )

enter image description here 我没有得到结果,我在做什么错?谢谢

1 个答案:

答案 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 不能使用索引,因此请记住这一点。