MongoTemplate을 사용하여 mongo 컬렉션에서 요소를 검색하는 쿼리를 작성하고 있습니다. 쿼리 조건에는 밑줄이있는 속성이 포함되어 있는데,이 속성은 '._'로 대체되어 쿼리에서 항상 0 요소를 반환합니다. 다음과 같이 로그를 찾고 밑줄 문자가있는 속성의 스프링 몽고 쿼리 컬렉션
Criteria matchingCriteria = Criteria
.where("entries").elemMatch(Criteria.where("app_id").is(appId))
내가 생성 된 쿼리를 볼 수 있습니다
o.s.data.mongodb.core.MongoTemplate: find using query: { "entries" : { "$elemMatch" : { "app._id" : "5834718ab0"}}} fields: null for class: Ranking in collection: ranking
이미와 밑줄 '\\'파괴력, BasicQuery으로 시도하고, 유니 코드 "응용 프로그램을 사용했습니다 \ u005Fid "라는 표현을 사용했는데 아무 것도 작동하지 않았습니다."app "라는 이름의 컬렉션이 데이터베이스에 존재한다는 점에 유의해야합니다.
동작이 표준으로 보이지 않습니다. 밑줄이있는 다른 속성을 사용하면 값이 대체되지 않습니다. :
Criteria matchingCriteria = Criteria .where("entries").elemMatch(Criteria.where("unique_app_id").is(appId))
로그 :
o.s.data.mongodb.core.MongoTemplate find using query: { "entries" : { "$elemMatch" : { "unique_app_id" : "1131706359"}}} fields: null for class: class Ranking in collection: ranking
항목은 다음 형식의 컬렉션 배열입니다 :
{
"instanceId" : "654ba2d16579e",
"app_id" : "583471adb0",
"unique_app_id" : "554577506",
"value" : 169
}
그것은 (밑줄 교체없이) 같은 쿼리가에서 잘 작동하는지 언급 할 가치가 mongo IDE (이 경우에는 Robomongo).
저는 spring-boot-starter-data-mongodb 1.4.1.RELEASE를 사용하고 있습니다.
저는 현재 아이디어가 정말 부족합니다.
의견이 있으십니까? 이 Spring Data Commons 문서의 섹션 3.4.3 당
[Spring-Data-Jpa Repository - 엔티티 열 이름의 밑줄]의 가능한 복제본 (http : // stackoverflow.com/questions/23456197/spring-data-jpa-repository-entity-column-name 밑줄) – Keith
예제에'entries' 문서를 추가 할 수 있습니까? – Keith
원래 질문에 추가 된 @Keith. – guanabara