大家好我有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分钟。
答案 0 :(得分:1)
解决方案是GridFS,您需要将其付诸实践......
用于在MongoDB数据库中存储大文件的约定。所有官方MongoDB驱动程序都支持此约定,mongofiles程序也是如此。