Java MongoDB VS获取大量文档
我目前使用的是关系数据库(Oracle),目前正在试用MongoDB 我正在使用Java驱动程序从MongoDB的本地实例查询和获取数据。示例代码如下所示:Java MongoDB VS获取大量文档,java,Java,我目前使用的是关系数据库(Oracle),目前正在试用MongoDB 我正在使用Java驱动程序从MongoDB的本地实例查询和获取数据。示例代码如下所示: MongoClient mongoClient = new MongoClient(); MongoDatabase db = mongoClient.getDatabase("test"); MongoCollection<Document> restoCollection = db.getCollection("resta
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);
}
});
MongoClient MongoClient=new MongoClient();
MongoDatabase db=mongoClient.getDatabase(“测试”);
MongoCollection restoCollection=db.getCollection(“餐厅”);
文档irishCuisineFilter=新文档(“烹饪”、“爱尔兰”);
findItemerable=restoCollection.find(irishCuisineFilter);
iterable.forEach(新块(){
@凌驾
公开作废申请(最终文件){
系统输出打印项次(文件);
}
});
“餐厅”集合中的文档总数为1343082。find查询最终生成71918
我最初的假设是,上述情况将非常迅速。然而,forEach循环大约需要16秒才能完成。这违背了我当初选择MongoDB的目的。我想要的东西,将使数据查询和抓取都非常快。这是一个错误的假设吗?我遗漏了什么吗?问题:MongoDB与获取大量文档相比 解决方案:索引 除了提高代码效率外,我们还应该提高MongoDB处理大数据的读取效率。虽然上面提到的记录总数(1343082)并不是那么多,但为MongoDB编制索引将提高查询速度 索引支持查询的高效解析。如果没有索引,MongoDB必须扫描集合中的每个文档,以选择与查询语句匹配的文档。此扫描效率极低,需要mongodb处理大量数据 文件:
请在不调用system.out.println()并计算for循环时间的情况下尝试同样的方法,好吗?@newbiee已经尝试过了。循环本身大约需要16秒。瓶颈不在于打印文档,而在于循环本身。这就是我不明白的,也许你可以试着在烹饪领域设置一个索引,而不是尝试
db.getCollection(“餐厅”).find(eq(“烹饪”、“爱尔兰”)代码>(发件人:)?@Fildor是。没有区别!我在烹饪领域创建了一个索引,但它仍然和以前一样慢。另一方面,当我对MonogoCollection发出count()方法时,我会得到过滤项目的数量。因此,看起来过滤速度很快,但浏览文档的速度很慢