Спроектировать только определенные поля при использовании MongoTemplate из Spring Data MongoDB для запроса поиска?
Aug 15 2020
Интересно, как, если возможно, я могу выполнить поисковый запрос с помощью Spring Data MongoDB, используя, mongoTemplate
но не возвращая весь документ? С «родным» драйвером Java Sync от MongoDB я могу делать вот так:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
так что document
единственное включает "поле" и ничего больше.
Как я могу сделать то же самое, если mongoTemplate
я не могу найти что-то подобное projection
при использовании mongoTemplate.findOne(..)
. Вам нужно использовать для этого агрегатный конвейер mongoTemplate
?
Я использую Spring Data MongoDB версии 3.0.1.RELEASE (весенняя загрузка 2.3.3).
Ответы
2 DeepakPatankar Aug 15 2020 at 12:29
Вы можете использовать параметры include()
или exclude()
в запросе.
пример:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);
Ссылка на документацию: data / mongodb / core / query / Field