MongoDBはQueryがちょっと特殊です。
http://gihyo.jp/dev/serial/01/mongodb/0003?page=2
この辺りを参考に。。
データにISODate型で入っているものに対してwhere句はこんなかんじ
> db.search_engine.find({time:{$gte:ISODate("2013-04-12T04:10:30Z"),$lt:ISODate("2013-04-12T04:32:50Z")}},{time:1}).sort({time:1}) { "_id" : ObjectId("5167893f7cbb48516f000013"), "time" : ISODate("2013-04-12T04:10:30Z") } { "_id" : ObjectId("5167893f7cbb48516f000014"), "time" : ISODate("2013-04-12T04:10:31Z") } { "_id" : ObjectId("5167893f7cbb48516f000015"), "time" : ISODate("2013-04-12T04:10:33Z") } { "_id" : ObjectId("5167893f7cbb48516f000016"), "time" : ISODate("2013-04-12T04:10:34Z") } { "_id" : ObjectId("51678caf7cbb48516f00002f"), "time" : ISODate("2013-04-12T04:25:07Z") } { "_id" : ObjectId("51678caf7cbb48516f000030"), "time" : ISODate("2013-04-12T04:25:07Z") } { "_id" : ObjectId("51678caf7cbb48516f000031"), "time" : ISODate("2013-04-12T04:25:08Z") } { "_id" : ObjectId("51678caf7cbb48516f000032"), "time" : ISODate("2013-04-12T04:25:08Z") } { "_id" : ObjectId("51678e687cbb48516f000049"), "time" : ISODate("2013-04-12T04:32:34Z") } { "_id" : ObjectId("51678e687cbb48516f00004a"), "time" : ISODate("2013-04-12T04:32:34Z") } >
これをJavaから接続するにはちょっと悩みました
http://www.mkyong.com/mongodb/java-mongodb-query-document/
http://stackoverflow.com/questions/9091155/mongo-isodate-query-in-java
この辺りを参考に
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd"); Date fromDate=df.format("20130412"); Date toDate=df.format("20130413"); String host="hostname"; int port=11111; MongoClient mon=new MongoClient(new ServerAddress(host,port)); DB db=mon.getDB("dbName"); DBCollection coll=db.getCollection("collection"); BasicDBObject query=new BasicDBObject(); query.put("time",new BasicDBObject("$gte",fromDate).append("$lte",toDate)); DBCursor cur=coll.find(query); while(cur.hasNext()){ DBObject o=cur.next(); }
ポイントはJavaのDateクラスがそのまま用いることができるとのこと。
結構悩みました。。