Spring 데이터를 사용하면 @Document 주석을 사용하여 개체를 저장할 컬렉션을 지정할 수 있습니다. 학생과 교사라는 두 가지 수업이 있으며 모두 인물 컬렉션에 보관되어 있다고 가정 해보십시오. 다음 코드를 실행하면동일한 컬렉션에 저장된 여러 클래스를 쿼리하는 스프링 데이터 mongodb
mongo.find(new Query(), Teacher.class);
결과에 학생과 교사가 모두 포함됩니다. Spring-Data에 의해 생성 된 데이터를 보면 각 문서는 그것이 유지되는 클래스를 나타내는 "_class"필드를 포함합니다.
이 필드는 찾기에서만 필터를 사용하여 교사를 반환하지 않습니다. 이 작업을 수행하는 것 외에도 교사 만 질문하는 방법은 무엇입니까?
mongo.find(new Query().addCriteria(where("_class").is(Teacher.class.getCanonicalName()), Teacher.class);
감사 올리버, 나는 티켓을 올릴 것이다. – ltfishie
mongodb Jira를 지나는 중에, 1.0.M3으로 고정 된 시장 인이 티켓 https://jira.springsource.org/browse/DATAMONGO-128을 발견했습니다. 여전히 소스에 있습니까? – ltfishie
예.하지만이 시나리오에 영향을 미치지 않습니다. 이 티켓은'Person'과'Teacher'를 같은 콜렉션 안에 저장하고 그것으로부터 객체를 쿼리 할 수 있고'Person'과'Teacher'를 인스턴스화 할 수 있다는 것을 다룹니다 (그러므로 필요한 타입 정보). 실제로 "오직 읽기 전용"교사용 "시나리오를 개선하는 것을 고려하지 않습니다. –