小编Jér*_*mie的帖子

Spring Data Mongodb上的性能问题

我在spring数据mongodb上遇到了一个问题,在一个方法中,我请求一个简单的"查找"来检索~1000个文档.

我的春天数据代码在这里:

Query myquery = query(where("ipp").is(ipp).and(CODE_MESURE).in(codes).and(DATE_MESURE).gte(iDateDebut).lt(iDateFin));
return template.find(myquery, MessageMongo.class);
Run Code Online (Sandbox Code Playgroud)

使用JProfiler,我在MongoTemplate类的"find"方法中得到了~1/2秒.注意:对MongoDB的请求不是问题,执行时间不到20ms. 在此输入图像描述

但是如果尝试通过传统方式使用mongo java驱动程序请求相同的查询:

final DBCollection collection = template.getCollection(Constantes.MONGO_COLLECTION_MESSAGES_PARAMETRES_VITAUX);
 final DBCursor cursor = collection.find(myquery.getQueryObject());
final List<MessageMongo> tab = new ArrayList<>();
 while (cursor.hasNext()) {
  final DBObject d = cursor.next();
  tab.add(new MessageMongo((String) d.get("origine"), (String) d.get("appareil"),
      (String) d.get("chambre"), (String) d.get("lit"), (String) d.get("uf"), (String) d.get("ipp"),
      (String) d.get("domaineIpp"), (String) d.get("iep"), (String) d.get("domaineIep"), (String) d.get("ej"),
      ((Date) d.get("dateReception")).toInstant(), (String) d.get("codeMesure"),
      (String) d.get("uniteMesure"), (Double) d.get("valeurMesure"), ((Date) d.get("dateMesure")).toInstant()));
 }
return tab;
Run Code Online (Sandbox Code Playgroud)

我的方法在~140ms内执行(比mongoTemplate样式快10倍!) 在此输入图像描述 是否有Spring Data Mongo中的错误,或者我错过了配置的内容?我更喜欢写,更容易阅读,但性能很差:'(

Document类:

@Document(collection …
Run Code Online (Sandbox Code Playgroud)

java performance spring mongodb spring-data-mongodb

5
推荐指数
1
解决办法
2592
查看次数

标签 统计

java ×1

mongodb ×1

performance ×1

spring ×1

spring-data-mongodb ×1