【问题标题】:Date comparison in mongodbMongoDB中的日期比较
【发布时间】:2015-09-13 08:06:43
【问题描述】:

我想检索特定日期之后的所有文档。 我的数据库的日期为 - DateAdded:"2014-12-17 10:03:46.000Z"

我写了以下查询-

db.collection.find({DateAdded:{"$lte":new Date("2015-06-17 10:03:46.000Z")}})

但是,即使有截至2015-06-24 的日期的记录,结果也不会获取任何记录。

【问题讨论】:

  • 您的日期是字符串格式。您需要以 IOSDate 格式 save/update 它以获取当前查询的结果。
  • 只有日期格式。
  • 试试"$gte" : ISODate("2015-06-17 10:03:46.000Z")
  • 成功了。谢谢。 :) 你能解释一下前一个是如何以及为什么没有的吗?
  • @L_7337 当您添加对 Date 和 ISODate 之间区别的简短说明时,您可以将其发布为答案。

标签: mongodb date


【解决方案1】:

您可以使用 ISODate 来比较日期:

"$lte" : ISODate("2015-06-17T10:03:46Z")

ISODate 有效,因为这是您的日期格式。

new Date() 

将日期包装在 ISODate 帮助器中,但无法在您的查询中进行转换。

查看此链接了解更多信息:http://docs.mongodb.org/manual/core/shell-types/

【讨论】:

  • Mongo shell 是否允许使用Date 进行查询,因为它在查询 Mongo 日期字段时似乎没有用处?
【解决方案2】:

你可以用这个:

db.collection.find({DateAdded:{"$lte":new Date("2017-11-01")}})

它将您的日期格式转换为:

ISODate("2017-11-01T00:00:00Z")

【讨论】:

    【解决方案3】:

    使用ISODate

    格式:

    {'field': {$operator: ISODate(yyyy-MM-ddThh:mm:ss.msZ)}}
    

    示例:

    db.getCollection('yourCollection').find({'sampleField': {$lte: ISODate('2015-06-17T10:03:46.000Z')}})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      相关资源
      最近更新 更多