0

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

4

1 回答 1

1

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

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

于 2013-08-28T16:14:28.927 回答