我正在尝试比较以下集合中的日期
$db.notifications.find() { "_id" : ObjectId("51a4467be4b0142fc8b80eda"), "time" : "Tue May 28 11:24:03 IST 2013", "KEY" : "VALUE1" } { "_id" : ObjectId("51a4467be4b0142fc8b80edb"), "time" : "Tue May 28 11:24:03 IST 2013", "KEY" : "VALUE2" }
使用
$db.notifications.find({ "time" : { "$gt" : "Fri May 31 00:00:00 IST 2013"}})
但我观察到的是它比较将“时间”视为字符串而不是日期,因此第二个命令将两个条目都返回给我。
$ db.notifications.find({ "time" : { "$gt" : "Fri May 31 00:00:00 IST 2013"}}) { "_id" : ObjectId("51a4467be4b0142fc8b80eda"), "time" : " 5 月 28 日星期二 11:24:03 IST 2013","KEY":"VALUE1"} {"_id":ObjectId("51a4467be4b0142fc8b80edb"),"time":"5 月 28 日星期二 11:24:03 IST 2013","键”:“值 2”}
你能帮我正确的查询,还让我知道如何用 JAVA 编写正确的版本。
非常感谢 !!
编辑1:
我正在使用以下代码保存日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
dateFormat.setLenient(false);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String nowString = dateFormat.format(new Date());
Date nowDate = dateFormat.parse(nowString);
input.put("formattedDate", nowDate);
DBCollection collection = db.getCollection(<collection name>);
DBObject dbObject = (DBObject) JSON.parse(input.toString());
collection.insert(dbObject);"
并使用查询
DBObject query = QueryBuilder.start().put("formattedDate")
.greaterThan(prevDate).get();
DBCursor cursorDocJSON = collection.find(query);
我看到我只将“时间”保存为日期。为什么还是有问题?