MongoDB查询

1,009 阅读1分钟

MongoDB查询大于某个时间,小于某个时间,在某一段时间范围

MongoDB 日期查询目前可通过Date 和ISODate两种方式:

MongoDB条件对应关系

  1. (>) 大于 - $gt

  2. (<)      小于 - $lt

  3. (>=)      大于等于 - $gte

  4. (<=      ) 小于等于 - $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查询:

  1. db.xxxx.find({"ct":{"$gt":ISODate("2017-04-20T01:16:33.303Z")}}) // 大于某个时间

  2. db.xxxx.find({"ct":{"$lt":ISODate("2017-04-20T01:16:33.303Z")}}) // 小于某个时间

  3. db.xxxx.find({"and":\[{"ct":{"gt":ISODate("2017-04-20T01:16:33.303Z")}},{"ct":{"$lt":ISODate("2018-12-05T01:16:33.303Z")}}]}) // 某个时间段

  4. db.xxxx.find({"ct":{"gte":ISODate("20170420T01:16:33.303Z"),"gte":ISODate("2017-04-20T01:16:33.303Z"),"lte":ISODate("2018-12-05T01:16:33.303Z")}}) //某个时间段

4.JAVA API操作

  1. DBCollection      dbcollection = xxx.getCollection("xxxxxx");

  2. DBObject dbObject = new BasicDBObject();

  3. String startDate = "2017-04-24 21:59:06";

  4. String endDate = "2018-04-24 21:59:06";

  5. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  6. dbObject.put("$gte", sdf.parse(startDate));

  7. dbObject.put("$lte",       sdf.parse(endDate));

  8. DBObject ageCompare = new BasicDBObject();

  9. ageCompare.put("ct",dbObject);

  10. //获取指定字段

  11. DBObject fieldObject = new BasicDBObject();

  12. fieldObject.put("user", true);

  13. fieldObject.put("goods", true);

  14. DBObject      returnDB = dbcollection.findOne(ageCompare,fieldObject);

  15. System.out.println(JsonUtil.toJson(returnDB));

图片

 

本文使用 文章同步助手 同步