簡體   English   中英

如何在使用帶有 spring 數據的 MongoRepository 的查詢注釋時顯示查詢

[英]how to show query while using query annotations with MongoRepository with spring data

我在 spring 引導中使用 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

並且不工作。

有人可以幫忙嗎?

我在 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

此外,您可以使用 yml 配置文件,將其放在 application.yml 文件中。

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

對於 ReactiveMongo,將此屬性添加到您的 .properties 文件中

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

這是一個遲到的答案,但我發現尚未根據問題給出正確答案。

人們已經給出的答案可能適用於其他場景。 但是,如果您使用的是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: {}

我認為完整的解決方案是根據@Wilder Valera 和@Chaojun Zhong

當你想登錄 MongoTemplate 答案時:

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

當你想登錄 ReactiveMongoTemplate 時,你應該使用:

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

建議的解決方案是有效的。 但是,如果您使用@DocumentReference ,您可能會注意到 N+1 查詢不會出現在日志中。

如果您想知道是否查詢了引用的集合,請添加以下屬性:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM