java 在MongoRepository和Spring Data 中使用查询注解时如何显示查询

vq8itlhq  于 2023-01-24  发布在  Java
关注(0)|答案(6)|浏览(178)

我在Spring Boot 使用MongoRepository来访问mongo:

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

它可以工作,但我不知道确切的查询它访问mongo
怎么做呢?
我尝试添加一些配置属性如下:

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

却不起作用。
有人能帮忙吗?

xqkwcwgp

xqkwcwgp1#

我在www.example.com中添加了下面这行代码application.properties,运行良好:

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

用于查询:

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

获取此日志:

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
4urapxun

4urapxun2#

另外,你可以使用一个yml配置文件,把它放在你的应用程序.yml文件中。

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

q0qdq0h23#

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

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

kq0g1dla4#

这是一个迟来的答案,但我发现正确的答案还没有给出的基础上的问题。
人们已经给出的答案可能适用于其他情况。但是,如果您使用的是MongoRepository,则正确的配置如下:

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

您在配置中使用的是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: {}
llycmphe

llycmphe5#

我认为完整的解决方案是根据@怀尔德瓦莱拉和@Chaojun Zhong
当你想登录MongoTemplate的答案:

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

当您想要记录ReactiveMongoTemplate时,您应该用途:

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

t3psigkw6#

建议的解决方案是有效的,但是如果你使用@DocumentReference,你可能会注意到N+1个查询不会出现在日志中。
如果要了解是否查询了引用的集合,请添加以下属性:

logging.level.org.springframework.data.mongodb.core.convert.MongoDatabaseFactoryReferenceLoader=TRACE

相关问题