无法按日期查询mongodb
我已经采用了无法按日期查询mongodb,mongodb,datetime,Mongodb,Datetime,我已经采用了spring-data-mongo一段时间了,但是当我需要定期获取数据时,我会打一个拦截器,比如说每隔20秒。我使用ISODate对象,因此它的形式是ISODate(“2013-08-09T05:51:16.140Z”) 下面是一个示例文档 { "_id": "fffd8e68-e81a-4835-ac5c-ef532291584b", "_class": "net.publichealth.edowmis.datalayer.models.Post", "userID": "
spring-data-mongo
一段时间了,但是当我需要定期获取
数据时,我会打一个拦截器,比如说每隔20秒
。我使用ISODate对象,因此它的形式是ISODate(“2013-08-09T05:51:16.140Z”)
下面是一个示例文档
{
"_id": "fffd8e68-e81a-4835-ac5c-ef532291584b",
"_class": "net.publichealth.edowmis.datalayer.models.Post",
"userID": "09258b84-6d09-4977-a0f1-4e59b963221f",
"dateCreated": ISODate("2013-08-09T06:29:07.413Z"),
"lastModified": ISODate("2013-08-09T06:29:07.413Z"),
}
我想查询数据库以查找当时的所有条目:2013-08-09 06:29:07
,但下面的查询没有一个有效。我在mongoshell
(ubuntu终端)和rockmongo
和intellijmongo
插件中尝试了这些查询
// rock mongo on post collection
{
"dateCreated" : new ISODate("2013-08-09T06:29:07")
}
{
"dateCreated" : new ISODate("2013-08-09 06:29:07")
}
{
"dateCreated" : new ISODate("2013-08-09")
}
// terminal and intelliJ
db.post.find({"dateCreated":new ISODate("2013-08-09T06:29:07")}) // did all the combination above.
无结果:(
我找不到鱼了。请帮我看看
谢谢你首先,别忘了
Z
。这是ISO8601“祖鲁时间”的指标,这是表示“UTC”或“GMT”的另一种方式。没有它,你只是表示一个“未指定”的时间,或者换句话说,一个日历位置,它不是一个明确的时间,因为你没有指出它与UTC的关系。(我不确定Mongo是否会允许这样做。)
其次,看起来您正在尝试进行精确的相等匹配。数据库中的值有小数,但您要查询的值没有小数。因此,它们永远不会匹配,因为它们不是相同的值
您可能需要执行范围查询。例如,您可以执行以下操作:
db.post.find({"dateCreated": {"$gte": new ISODate("2013-08-09T06:29:07Z"),
"$lt": new ISODate("2013-08-09T06:29:08Z")}})
另请参见。太好了,你就是那个人!!再次感谢。如果你熟悉spring数据,你能在回答中添加一种最好的方式来形成java date对象以获得按范围的结果吗?应该考虑JodaTime吗?IMHO-Joda Time应该一直考虑,但这并不意味着它是必需的。我不确定是否遵循了你的其余命令nt,但听起来这应该是一个新问题,有支持性的细节。好的,谢谢,我会自己做一些东西,如果仍然不起作用,我会写一篇帖子。