2017-03-06 5 views
0

Morphia를 사용하여 조회 문제가 있습니다.Mongodb Morphia 집계 조회 일치

class person{ 
private ObjectId id; 
private String name; 
} 

class book{ 
private ObjectId id; 
private String title; 
} 

class person_ownership{ 
private ObjectId id; 
private person p; 
private List<book> books; 
} 

List<book> BOOKs = new ArrayList<book>(); 

내가 뭘하려고하는 책 ​​모음 여기

에서 ID를 필터링 할 사람 컬렉션 검색하여있다가 내가 로했다

AggregationPipeline aggr = DS.createAggregation(person.class); 
aggr.lookup("person_ownership", "id", "p.id", "ownership"); 
aggr.unwind("ownership"); 

Query<person> q = DS.createQuery(person.class); 
q.disableValidation().criteria("ownership.books").in(BOOKs); 
aggr.match(q); 

Iterator<person> aggregate = aggr.aggregate(person.class, opts); 

내 통합 파이프 라인 : 여기 내 코드입니다 q.disableValidation() 그것을 전달합니다. 그러나 파이프는 여전히 아무것도 반환하지 않습니다.

나는 throu 사람을 통과하여 이것을 쿼리해야합니다!

도 가능합니까? 거기에 exemple가 없습니다!

+0

가능합니다. 쿼리하려는 각 컬렉션의 문서를 추가 할 수 있습니까? – Veeram

+0

명 : [{_ id : ..., 이름 : ...}]; person_ownerships : [{_id : ..., p : DBRef ("persons", ObjectId ("...")), 서적 : [DBRef ("books", ObjectId ("...")), DBRef ("books", ObjectId ("...")), ...]}]]; books : [{id : ..., title : "..."}] –

+0

books : [{_id : ..., 제목 : "..."}, ...] 우리는 항상 ** out ** 이것을 새로운 컬렉션에 넣으시겠습니까? 그렇다면 동시 요청은 어떻게됩니까? ** aggr.unwind ("ownership.books"); **를 시도했지만 올바르지 않은 결과가 표시됨 –

답변

0

이렇게 보일 수도 있습니다! Morphia는 참조 필드를 조회하지 않습니다. 집단 ID를 참조하는 다른 필드를 불러야했습니다 !!!