Jaka jest różnica między MongoTemplate i MongoRepository Spring Data?

Muszę napisać aplikację, dzięki której mogę wykonywać złożone zapytania za pomocą spring-data i mongodb. Zacząłem od użycia MongoRepository, ale borykałem się ze złożonymi zapytaniami, aby znaleźć przykłady lub faktycznie zrozumieć składnię.

Mówię o takich zapytaniach:

@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
    List<User> findByEmailOrLastName(String email, String lastName);
}

lub użycie zapytań opartych na JSON, które próbowałem metodą prób i błędów, ponieważ nie otrzymałem poprawnej składni. Nawet po przeczytaniu dokumentacji mongodb (przykład nie działający z powodu złej składni).

@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
    @Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]")
    List<User> findByEmailOrFirstnameOrLastnameLike(String searchText);
} 

Po przeczytaniu całej dokumentacji wydaje się, żemongoTemplate jest wtedy znacznie lepiej udokumentowanyMongoRepository. Mam na myśli następującą dokumentację:

http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/

Czy możesz mi powiedzieć, co jest wygodniejsze i bardziej wydajne w użyciu?mongoTemplate lubMongoRepository? Czy oba są tak samo dojrzałe, czy jeden z nich nie ma więcej funkcji niż drugi?

questionAnswers(3)

yourAnswerToTheQuestion