스프링 데이터가 있는 MongoRepository에서 쿼리 주석을 사용하는 동안 쿼리를 표시하는 방법
Mongo에 액세스하기 위해 Spring boot에서 MongoRepository를 사용하고 있습니다.
public interface MongoReadRepository extends MongoRepository<User, String> {
@Query(value = "{$where: 'this.name == ?0'}", count = true)
public Long countName(String name);
}
그리고 그것은 작동할 수 있지만, 나는 그것이 몽고에 접근하는 정확한 쿼리를 알고 싶습니다.
그것을 어떻게 합니까?
아래와 같은 속성에서 몇 가지 구성을 추가하려고 합니다.
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
언급URL : https://stackoverflow.com/questions/37118047/how-to-show-query-while-using-query-annotations-with-mongorepository-with-spring
'programing' 카테고리의 다른 글
| 에서 HTTP POST 요청을 보냅니다.그물 (0) | 2023.05.02 |
|---|---|
| 파이썬에서 목록의 모든 숫자에서 값을 빼시겠습니까? (0) | 2023.05.02 |
| Mongoid를 사용한 배치 삽입/업데이트? (0) | 2023.05.02 |
| 이 이상한 행동을 C#으로 서명된 플로트로 설명할 수 있는 사람이 있습니까? (0) | 2023.05.02 |
| PowerShell에서 출력을 무시하는 더 나은(깨끗한) 방법은 무엇입니까? (0) | 2023.05.02 |