MongoDB VS获取大量文档

  • 本文关键字:文档 获取 VS MongoDB 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);
    }
});

"餐馆"收藏的文件总数为1343082份。find查询最终产生71918。

我最初的假设是,上述操作将非常快。然而,forEach循环大约需要16秒才能完成。这违背了我最初为什么要切换到MongoDB的目的。我想要一种能够使数据查询和获取都非常快速的东西。这是错误的假设吗?我是不是错过了什么?

问题:MongoDB VS获取大量文档

解决方案:索引

除了提高代码效率,我们还应该提高MongoDB处理大数据的读取效率。尽管提到的记录总数(1343082)并不是那么多,但对MongoDB进行索引将提高查询速度。

索引支持查询的高效解析。在没有索引的情况下,MongoDB必须扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描效率很低,需要mongodb处理大量数据。

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

最新更新