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

JavaSpringMongodbSpring DataMongorepository

Java Problem Overview


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?

Java Solutions


Solution 1 - Java

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

Solution 2 - Java

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

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

Solution 3 - Java

For ReactiveMongo add this property to your .properties file

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

Solution 4 - Java

>This is a late answer but I found the correct answer hasn't been given yet based on the question.

The answer already given by the people may be valid for other scenarios. But, if you are using the MongoRepository then the correct configuration would be the following:

logging.level.org.springframework.data.mongodb.repository.query= debug

You are using the Query in your configuration instead of query which is wrong.

When you add correct configuration then the logger would be like:

25-06-2020 17:58:43.301 [http-nio-9001-exec-10] DEBUG o.s.d.m.r.query.MongoQueryCreator.complete(162) - Created query Query: { "customer.id" : 2}, Fields: {}, Sort: {}

Solution 5 - Java

I think that the complete solution is according @Wilder Valera and @Chaojun Zhong

When you want to log for MongoTemplate the answer:

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

When you want to log for ReactiveMongoTemplate you should use:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiongenchiluView Question on Stackoverflow
Solution 1 - JavaLuis CostaView Answer on Stackoverflow
Solution 2 - JavaChaojun ZhongView Answer on Stackoverflow
Solution 3 - JavaWilder ValeraView Answer on Stackoverflow
Solution 4 - JavaYubarajView Answer on Stackoverflow
Solution 5 - JavaIvan RodriguesView Answer on Stackoverflow