2013-07-17 19 views
7

Jestem całkiem nowy dla mongodb. Używam spring-data-mongodb dla moich zapytań z java. Proszę mnie poprowadzić, jeśli jest to możliwe.zapytanie oparte na pasujących elementach na liście DBRef dla mongodb przy użyciu wiosennych danych-mongodb

Powiedz, mam dwa obiekty „samochód” i „użytkownik” w następujący sposób, gdzie samochód ma listę użytkowników,

Class Car { 

    @Id 
    String id; 
    String model; 
    @DBRef 
    List<User> users; 
    @DBRef 
    Company company; 

} 

Class User { 

    @Id 
    String id; 
    String name; 

} 

chcę znaleźć wszystkie samochody na użytkownika, (Znajdź wszystkie samochody gdzie samochód. użytkownicy podali użytkownika)

Czy można to osiągnąć za pomocą wiosennych danych-mongodb?

Jest to dość proste, jeśli istnieje tylko jeden element DBRef, na przykład dla firmy mogę napisać kwerendę tak,

new Query(Criteria.where("company.$id").is(new ObjectId(companyId))) 

Ale, jak to osiągnąć, jeśli nie jest to lista elementów określany jako DBRef ??

Dzięki za pomoc.

Odpowiedz

9

Zapytanie o jeden element w tablicy jest dokładnie takie jak zapytanie o równość pola. Można przeczytać dokumentację MongoDB here. Więc zapytanie będzie:

new Query(Criteria.where("users.$id").is(new ObjectId(userId))) 
+1

Hi @Miguel Co jeśli chcę wyszukiwać za pomocą nazwy użytkownika zamiast identyfikatora użytkownika w jednym zapytaniu – Sachin

+0

szukałem odpowiedzi już od wielu dni @Sachin. znalazłeś to przypadkiem? wszyscy zdają się odnosić do Id, – Hafiz

2

w repozytorium typu interfejsu to zapytanie na metodzie:

@Query("{'company' :{'$ref' : 'company' , '$id' : ?0}}") 
Company find(String companyId); 
+0

Jeśli musimy szukać na podstawie identyfikatora companyId i carId –

Powiązane problemy