mongodb中根据时间范围进行查询
2017-01-17 16:45
429 查看
时间字段处于数据顶层结构中
例如: 当前数据库中有1000条数据,数据的结构为:{ "_id" : { "$oid" : "587dc4069f527a223ca81f4f" }, "index" : 664, "create" : { "$date" : 1484637190565 } }
时间字段
create就处于数据的最顶层,这种类型的数据查询实现其实很简单,是需要使用eq、gt等方法即可,例如:
- 实现方法一
collection.find( new Document("create", new Document("$gt", new Date(1484637189630l)) ) ).forEach(new Block<Document>() { public void apply(Document document) { System.out.println(document.toJson()); } });
实现方法二
collection.find(gt("create",new Date(1484637189630l))).forEach( new Block<Document>() { public void apply(Document document) { System.out.println(document.toJson()); } });
时间字段处于数据的嵌套数据结构中
例如:当前数据库中有1000条数据,数据的结构为:{ "_id" : { "$oid" : "587dc4069f527a223ca81f51" }, "index" : 666, "times" : { "ct" : { "$date" : 1484637190587 } } }
时间字段
ct处于嵌套数据
times中,遇到这种结构的数据,还需要根据时间为条件进行查询数据,就需要以
ct的完整查询路径为查询条件进行查询,例如:
- 实现方法一
collection.find( new Document("times.ct", new Document("$gt", new Date(1484637189630l)) ) ).forEach(new Block<Document>() { public void apply(Document document) { System.out.println(document.toJson()); } });
实现方法二
collection.find(gt("times.ct",new Date(1484637189630l))).forEach( new Block<Document>() { public void apply(Document document) { System.out.println(document.toJson()); } });
这两种方法中均采用点号“.”分割,将
ct的完整路径作为查询参数进行查询。
这种查询方法其实在非时间类型上也是适用,不过这是我平时没有注意到的一个细节问题,记录下来方便查询。
相关文章推荐
- 8天学通MongoDB——第一天 基础入门
- 8天学通MongoDB——第二天 细说增删查改
- 8天学通MongoDB——第三天 细说高级操作
- 8天学通MongoDB——第四天 索引操作
- 8天学通MongoDB——第五天 主从复制
- 8天学通MongoDB——第六天 分片技术
- 8天学通MongoDB——第七天 运维技术
- 8天学通MongoDB——第八天 驱动实践
- mongodb
- Express + MongoDB 搭建一个多人博客(node.js实战)
- mongodb 指南
- MongoDB 分片问题汇总
- spring+mongodb的整合
- MongoDB中的游标
- mongodb 报错:Query failed with error code 13 and error message 'not authorized for query on ..."
- MongoDB的复制集
- MongoDb的学习
- mongodb学习日记二--------------------------常用操作
- mongodb学习日记一--------------------------安装及注意事项
- MongoDB_8天学通MongoDB——第八天 驱动实践