我目前使用的是关系数据库(Oracle),目前我正在尝试使用MongoDB。
我正在使用Java驱动程序从MongoDB的本地实例查询和获取数据。示例代码如下:
MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Document> restoCollection = db.getCollection("restaurants");
Document irishCuisineFilter = new Document("cuisine", "Irish");
FindIterable<Document> iterable = restoCollection.find(irishCuisineFilter);
iterable.forEach(new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document);
}
});
“restaurants”集合中的文档总数为1343082.查找查询最终会产生71918。
我最初的假设是,上述情况会非常快。但是,forEach循环大约需要16秒才能完成。这违背了我为什么要首先切换到MongoDB的目的。我想要的东西可以使数据查询和提取真的很快。这是一个错误的假设吗?我错过了什么吗?
答案 0 :(得分:0)
问题:MongoDB VS获取大量文档
解决方案:建立索引
除了提高代码效率外,我们还应该提高处理大数据的MongoDB读取效率。虽然提到的记录总数(1343082)不是很大,但索引MongoDB会提高查询速度。
索引支持有效解决查询。如果没有索引,MongoDB必须扫描集合的每个文档,以选择与查询语句匹配的文档。这种扫描非常低效,需要mongodb处理大量数据。