MongoDB查詢大於某個時間,小於某個時間,在某一段時間範圍
阿新 • • 發佈:2019-02-04
MongoDB 日期查詢目前可通過Date 和ISODate兩種方式:
MongoDB條件對應關係
(>) 大於 - $gt
(<) 小於 - $lt
(>=) 大於等於 - $gte
(<= ) 小於等於 - $lte
1.Date方式
例如查詢ct>=2012.12.7 且et<=2012.12.7:可翻譯為
"ct":{$gte:new Date(2012,11,7)},"et":{$lte:new Date(2012,11,7)}
如下是查詢日期大於等於2016年12月1日的記錄條數(注意,中間的月份寫11,就是12月)
db.xxx.find({"ct":{$gte:new Date(2016,11,1)}})
2.ISODate方式
ISODate("2016-01-01T00:00:00Z")
3.示列
以ISODate查詢:
db.xxxx.find({"ct":{"$gt":ISODate("2017-04-20T01:16:33.303Z")}}) // 大於某個時間 db.xxxx.find({"ct":{"$lt":ISODate("2017-04-20T01:16:33.303Z")}}) // 小於某個時間 db.xxxx.find({"$and":[{"ct":{"$gt":ISODate("2017-04-20T01:16:33.303Z")}},{"ct":{"$lt":ISODate("2018-12-05T01:16:33.303Z")}}]}) // 某個時間段 db.xxxx.find({"ct":{"$gte":ISODate("2017-04-20T01:16:33.303Z"),"$lte":ISODate("2018-12-05T01:16:33.303Z")}}) //某個時間段
4.JAVA API操作
DBCollection dbcollection = xxx.getCollection("xxxxxx"); DBObject dbObject = new BasicDBObject(); String startDate = "2017-04-24 21:59:06"; String endDate = "2018-04-24 21:59:06"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dbObject.put("$gte", sdf.parse(startDate)); dbObject.put("$lte", sdf.parse(endDate)); DBObject ageCompare = new BasicDBObject(); ageCompare.put("ct",dbObject); //獲取指定欄位 DBObject fieldObject = new BasicDBObject(); fieldObject.put("user", true); fieldObject.put("goods", true); DBObject returnDB = dbcollection.findOne(ageCompare,fieldObject); System.out.println(JsonUtil.toJson(returnDB));