首先,我发现了类似的问题,但对我而言没有任何帮助,它基于旧版本的MongoTemplate。 performance issue on Spring Data Mongodb
但是,我面临着同样的问题。在开发环境中,我得到了大约700个文档,它们看起来或多或少像这样,而且每个文档中都有一些额外的String值。
@Document
public class Document {
@Id
private String id;
private List<SubDocumentA> subDocumentsA;
private List<SubDocumentB> subDocumentsB;
}
public class SubDocumentA {
private String type;
private List<SomeData> someData;
}
我要执行的查询在这里很重要,直接在mongo shell上执行此查询会立即产生结果。我还在使用我的应用程序时对数据库进行了概要分析,查询耗时约5毫秒。
Query query = new Query((Criteria.where("subDocumentA.type").is("someType")));
result = mongoTemplate.find(query, Document.class);
在开发人员上返回的结果超过500,在生产环境中可能返回的结果是10-20倍。问题是,在开发环境上(最可能)将数据库响应解析为POJO需要7到10秒。