MongoDB VS获取大量文档

时间:2015-12-01 08:37:26

标签: java

我目前使用的是关系数据库(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的目的。我想要的东西可以使数据查询和提取真的很快。这是一个错误的假设吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

问题:MongoDB VS获取大量文档

解决方案:建立索引

除了提高代码效率外,我们还应该提高处理大数据的MongoDB读取效率。虽然提到的记录总数(1343082)不是很大,但索引MongoDB会提高查询速度。

  

索引支持有效解决查询。如果没有索引,MongoDB必须扫描集合的每个文档,以选择与查询语句匹配的文档。这种扫描非常低效,需要mongodb处理大量数据。

文档: https://docs.mongodb.org/manual/indexes/