Подсчет в репозитории Spring Data MongoDB

Интересно, есть ли какой-нибудь механизм для использования count в репозитории Spring Data MongoDB с аннотацией @Query? Я хотел бы получить то количество документов, которое у меня есть, без необходимости получать их все.

В принципе, эквивалент этого в Java:

db.test.find({"type":"foo"}).count 

person paul    schedule 23.05.2013    source источник


Ответы (3)


Для меня это решение работает как шарм (используя spring-data-mongodb 1.3.1.RELEASE), у меня была такая же проблема с банкоматом, и я решил ее следующим образом (просто короткий фрагмент моего кода на работе):

@Query(value = "{'productDetails.productType': {$regex: ?0, $options: 'i'}, 'sourceDescriptor': ?1}", count = true)
public Long countFetchedDocumentsForCategory(String cat, String sourceDescriptor);
person wmax    schedule 27.11.2013
comment
spring-data-mongodb:1.4.1.RELEASE также просит добавить в аннотацию @Param параметры - person Faisal Feroz; 10.04.2014
comment
Я думаю, ты закончишь. с 2 звонками. найти + посчитать - person John Tribe; 25.08.2020

Другой способ сделать это с помощью шаблонов запросов MongoRepository:

public interface MyRepository extends MongoRepository<MyClass, String> {
    Long countByLastname(String lastname);
}

См. http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-methods.details

person DanJ    schedule 30.09.2015
comment
Это должен быть принятый ответ. Спасибо за предоставление документа; Я слишком долго работал над этим: docs.spring.io/spring-data/data-mongo/docs/1.4.2.RELEASE/ - person lux; 03.10.2015

Недавно у меня была такая же проблема, и, к сожалению, я не нашел решения, по крайней мере, в текущей стабильной версии. Кажется, что это возможно в Spring Data JPA 1.4M1, так что, возможно, это также будет включено в следующей версии Spring Data MongoDB.

person Maciej Walkowiak    schedule 27.05.2013
comment
Ну, чтобы не увидеть, действительно ли это происходит. Спасибо за ответ! - person paul; 28.05.2013