我已经暂时采用了spring-data-mongo
,但是当我需要定期fetch
数据时,我会遇到一个拦截器,比如20 seconds
。我使用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
,但下面的查询没有工作。我在mongo shell
(ubuntu终端)和rockmongo
以及intellij mongo
插件中尝试了这些查询
// 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.
没有结果:(
我找不到捕获物。请帮我看一下
谢谢
答案 0 :(得分:2)
首先,不要忘记Z
。这是“zulu time”的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")}})