大家好,我对 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 分钟。