2013-05-23 11 views
8

Zastanawiam się, czy istnieje jakiś mechanizm do korzystania z count w repozytorium Spring Data MongoDB z adnotacją @Query? Chciałbym otrzymać liczbę dokumentów, które posiadam, bez konieczności ich pobierania.Policz w Spring Data Repozytorium MongoDB

zasadzie odpowiednik w Java:

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

Odpowiedz

17

Dla mnie to rozwiązanie działa jak zaklęcie (używając wiosennych danych-mongodb 1.3.1.RELEASE), Po prostu miałem ten sam problem i rozwiązałem go w ten sposób (tylko krótki fragment z mojego kodu w pracy) :

@Query(value = "{'productDetails.productType': {$regex: ?0, $options: 'i'}, 'sourceDescriptor': ?1}", count = true) 
public Long countFetchedDocumentsForCategory(String cat, String sourceDescriptor); 
+0

spring-data-mongodb: 1.4.1.RELEASE prosi również o dodanie adnotacji @Param do parametrów –

1

miałem ten sam problem niedawno i niestety nie znaleźliśmy żadnego rozwiązania przynajmniej nie z aktualnej stabilnej wersji. Wygląda na to, że it is possible w Spring Data JPA 1.4M1, więc być może znajdzie się również w następnej wersji Spring Data MongoDB.

+0

Well, lest's zobaczyć, czy naprawdę się dzieje. Dzięki za odpowiedzi! – paul

20

Inny sposób to zrobić przy użyciu MongoRepository szablonów zapytań:

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

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

+0

To powinna być zaakceptowana odpowiedź. Dzięki za dostarczenie dokumentu; Pracuję nad tym zbyt długo: http://docs.spring.io/spring-data/data-mongo/docs/1.4.2.RELEASE/reference/html/mongo.repositories.html – lux

Powiązane problemy