如何在使用带有弹簧数据的MongoRepository的查询注释时显示查询

gen*_*ilu 28 java spring mongodb spring-data mongorepository

我在spring boot中使用MongoRepository来访问mongo:

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

它可以工作,但我想知道它访问mongo的确切查询

怎么做?

我尝试在下面的属性添加一些配置:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
logging.level.org.springframework.data.mongodb.repository.Query=DEBUG
Run Code Online (Sandbox Code Playgroud)

并且不工作.

有人可以帮忙吗?

小智 58

我在application.properties中添加行(下面)并且工作正常:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
Run Code Online (Sandbox Code Playgroud)

查询:

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

获取此日志:

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
Run Code Online (Sandbox Code Playgroud)

  • 我什至导入了 log4j 并尝试了相同的解决方案,但它对我不起作用 (2认同)

Cha*_*ong 11

您也可以使用yml配置文件,将其放在application.yml文件中.

logging:
  level:
    org.springframework.data.mongodb.core.MongoTemplate: DEBUG
Run Code Online (Sandbox Code Playgroud)


Wil*_*era 6

对于ReactiveMongo,将此属性添加到您的.properties文件中

logging.level.org.springframework.data.mongodb.core.ReactiveMongoTemplate=DEBUG
Run Code Online (Sandbox Code Playgroud)


Yub*_*raj 6

这是一个迟到的答案,但我发现尚未根据问题给出正确答案。

人们已经给出的答案可能适用于其他场景。但是,如果您使用的是,MongoRepository那么正确的配置如下:

logging.level.org.springframework.data.mongodb.repository.query= debug
Run Code Online (Sandbox Code Playgroud)

Query在配置中使用的是而不是query哪个是错误的。

添加正确的配置后,记录器将如下所示:

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: {}
Run Code Online (Sandbox Code Playgroud)