Korzystamy z MongoDB i org.springframework.data.mongodb.core.MongoTemplate;do tworzenia zapytań do tej bazy. Od jakiegoś czasu zgłaszano nam z produkcji, że wyszukiwarka wolno działa, sprawdziłem na środowisku dev gdzie mam w sumie około 700 dokumentów w bazie - to samo. Sama encja którą wyszukuję wygląda mniej więcej tak
public class Document {
private String id;
private SubDocumentOne one;
private SubDocumentTwo two;
}
public class SubDocumentOne {
private DateTime date;
private String type;
private String xmlContent;
private List<BusinessData> businessData;
}
public class BusinessData {
private String key;
private String value;
W sumie w każdym z dokumentów jest 5-10 pól.
Query wygląda tak
Query query = new Query((Criteria.where("subdocumentone.type").is("someType")));
result = mongoTemplate.find(query, Document.class);
Z tego co widziałem to do mongo leci
{ "subdocumentone.type" : { "$eq" : "someType" }
Wynikiem jest ok 600 dokumentów. Zapytanie trwa około 15 sekund. Z tym, że samo query na mongo wykonuje się <5ms. Resztę czasu prawdopodobnie trwa konwertowanie tej odpowiedzi do obiektów Javowych. Pytanie więc, jak to przyśpieszyć? Jest inne rozwiązanie niż wprowadzenie pageowania?