Java 从MongoDB集合中查询超过100万条记录的最佳方法
请在下面找到我的mongoDB示例文档:Java 从MongoDB集合中查询超过100万条记录的最佳方法,java,mongodb,spring-boot,mongodb-query,mongotemplate,Java,Mongodb,Spring Boot,Mongodb Query,Mongotemplate,请在下面找到我的mongoDB示例文档: [ { "_id" : ObjectId("55c0e5e5511f0a164a581907"), "_class" : "sample.model.User", "name" : "Eric", "DOJ" : "2012-01-22 08:09:20.000", "age" : 45 }, { "_id" : ObjectId("5
[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "sample.model.User",
"name" : "Eric",
"DOJ" : "2012-01-22 08:09:20.000",
"age" : 45
},
{
"_id" : ObjectId("55c0e5e5511f0a164a581908"),
"_class" : "sample.model.User",
"name" : "Antony",
"DOJ" : "2011-07-22 08:09:20.000",
"age" : 33
},
{
"_id" : ObjectId("55c0e5e5511f0a164a581909"),
"_class" : "sample.model.User",
"name" : "Alice",
"DOJ" : "2018-05-01 08:16:20.000",
"age" : 35
}
]
我收藏了数百万张这样的唱片。我需要一种基于司法部日期的高效查询方法,在这种情况下,我可能会在同一司法部日期获得超过一百万条记录。请在下面找到我使用mongoTemplate获取记录时使用的示例代码:
Criteria criteria = new Criteria().andOperator(Criteria.where("DOJ").gte("2018-01-01 08:10:00.000"), Criteria.where("DOJ").lte("2020-01-01 08:10:00.000"));
Query query = new Query(criteria);
List<User> users = mongoTemplate.find(query,User.class);
Criteria=new Criteria().andOperator(Criteria.where(“DOJ”).gte(“2018-01-01 08:10:00.000”)、Criteria.where(“DOJ”).lte(“2020-01-01 08:10:00.000”);
查询=新查询(条件);
List users=mongoTemplate.find(查询,User.class);
如果返回的结果超过100000条记录,则我需要对每个司法部分组的记录进行分页,或者如果在同一司法部日期有100000条记录,则我必须根据每小时对其进行分组。非常感谢您的帮助 旁注:Mongo集合的内容不是记录,而是文档。@Tim Biegeleisen谢谢你的注释。我想你可以先计算一下,因为你在这个标准上有不同的逻辑。然后您需要一页一页地获取文档。如果您同时需要所有这些,那么我认为没有其他方法可以使它更快(除了添加索引)。