在Mongodb上慢找

时间:2013-08-27 07:04:05

标签: spring mongodb

大家好我有mongo的问题, 我已经安装mongodb以下文档,我使用mongo与spring。 我在mongo 400000上插入了一小段文件:

List<LinkedHashmap<String,Object> listelem = contains all row of a file.
MongoTemplate mongo =  new MongoTemplate(new MongoClient(), "mydb");
mongo.insert(list, "mycollection");
for(int i=0; i< list.size();i++){
    mongo.insert(list.get(i), "mycollection");
}

我使用此解决方案,因为如果我使用:

mongo.insert(list, "mycollection");

并且文件内容大于16MB,插入速度很慢。 (有解决方案吗?)

如果我想找到文件的所有行,我就这样做:

MongoTemplate mongo = null;
try {
    mongo = new MongoTemplate(new MongoClient(), "mydb");
} catch (UnknownHostException e) {
    e.printStackTrace();
}
Query search = new Query(Criteria.where("idfile").is(idfile));
List<BasicDBObject> listElem = mongo.find(search,BasicDBObject.class,"mycollection");

但是这个发现很慢,我在db上插入索引:

db.mycollection.ensureIndex( { "idfile": 1 } )

我在哪里做错了?感谢。

在包含400.000记录的集合上获取100.000行的文件的时间是150秒。并且为单行插入此文件(23MB)的时间是240秒,如果我使用单个插入,则时间是10分钟。

1 个答案:

答案 0 :(得分:1)

解决方案是GridFS,您需要将其付诸实践......

  

用于在MongoDB数据库中存储大文件的约定。所有官方MongoDB驱动程序都支持此约定,mongofiles程序也是如此。