Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to show query while using query annotations with MongoRepository with spring data

I'm using MongoRepository in spring boot to access mongo:

public interface MongoReadRepository extends MongoRepository<User, String> {     @Query(value = "{$where: 'this.name == ?0'}", count = true)     public Long countName(String name); } 

and it could work, but i wonder know the exactly query it accessing mongo

how to do that?

i try to adding some config at properties like below:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG logging.level.org.springframework.data.mongodb.repository.Query=DEBUG 

and don't work.

could somebody help?

like image 337
genchilu Avatar asked May 09 '16 14:05

genchilu


2 Answers

I add the line (below) in application.properties and works fine:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG 

for query:

@Query("{$and: [{'$or' : [{ 'name': {$regex : ?0, $options: 'i'}}, {'description': {$regex : ?1, $options: 'i'}}]}, { 'deleted' : ?2 }]}") 

obtain this log:

2016-09-27 10:53:26.245 DEBUG 13604 --- [nio-9090-exec-3] o.s.data.mongodb.core.MongoTemplate      : find using query: { "$and" : [ { "$or" : [ { "name" : { "$regex" : "c" , "$options" : "i"}} , { "description" : { "$regex" : "c" , "$options" : "i"}}]} , { "deleted" : false}]} fields: null for class: class com.habber.domain.Entity in collection: entities 
like image 82
Luis Costa Avatar answered Sep 21 '22 08:09

Luis Costa


Also, you can use a yml config file, put it in your application.yml file.

logging:   level:     org.springframework.data.mongodb.core.MongoTemplate: DEBUG 
like image 31
Chaojun Zhong Avatar answered Sep 21 '22 08:09

Chaojun Zhong