您的位置:首页 > 数据库 > Mongodb

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
的完整路径作为查询参数进行查询。

这种查询方法其实在非时间类型上也是适用,不过这是我平时没有注意到的一个细节问题,记录下来方便查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: