Spring Mongo DB上的慢速查找

Spring Mongo DB上的慢速查找,spring,mongodb,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(lis

嗨伙计们我和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");
}
而且文件内容>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");
我哪里做错了?谢谢

获取包含400.000条记录的集合中有100.000行的文件的时间为150秒。单行插入这个文件(23MB)的时间是240秒,如果我使用单次插入,时间是10分钟

解决方案是,你需要把它付诸实践

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


你能告诉我你的查询时间吗?据我所知,您有一个集合,其中有多个文件,每个文件对应大约400.000个条目。这听起来相当大,因此您可以预期查询时间在秒范围内。我还没有使用Springs mongodb集成,所以我不能说为什么插入每个列表项而不是整个列表更快。我需要插入行而不是整个文件。插入此文件(23MB)的时间是240秒,如果使用单个插入,时间是10分钟。因此,您的文件小于16MB,这是为大行提供mongodb的解决方案…谢谢,我想我可以这样做。这意味着我将使用gridfs
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.mycollection.ensureIndex( { "idfile": 1 } )