Прежде всего, я нашел похожий вопрос, но у меня ничего не работает, и он основан на старой версии MongoTemplate.
проблема производительности в Spring Data Mongodb
Но я столкнулся с той же проблемой. В среде разработчиков я получил около 700 документов, которые выглядят примерно так + немного дополнительных строковых значений в каждом.
@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 приводит к мгновенному результату. Я также профилировал базу данных при использовании моего приложения, запрос занял около 5 мс.
Query query = new Query((Criteria.where("subDocumentA.type").is("someType")));
result = mongoTemplate.find(query, Document.class);
Возвращает чуть более 500 результатов в dev и, вероятно, в 10-20 раз больше в производственной среде. Проблема в том, что в среде разработчиков требуется 7-10 секунд (скорее всего) для анализа ответа базы данных в POJO.
Вот что показывает JProfiler
![enter image description here](https://i.stack.imgur.com/Nd9MU.jpg)