Preciso escrever um aplicativo com o qual possa fazer consultas complexas usando spring-data e mongodb. Comecei usando o MongoRepository, mas lutei com consultas complexas para encontrar exemplos ou realmente entender a sintaxe.
Estou falando de consultas como esta:
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
List<User> findByEmailOrLastName(String email, String lastName);
}
ou o uso de consultas baseadas em JSON que tentei por tentativa e erro porque não entendi a sintaxe certa. Mesmo depois de ler a documentação do mongodb (exemplo que não funciona devido à sintaxe errada).
@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);
}
Depois de ler toda a documentação, parece que mongoTemplate
está muito melhor documentado MongoRepository
. Estou me referindo à seguinte documentação:
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/
Você pode me dizer o que é mais conveniente e poderoso de usar? mongoTemplate
ou MongoRepository
? Ambos são maduros ou um deles não tem mais recursos do que o outro?