2017-03-06 15 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:...、名前:...}]; DBRef( "books"、ObjectId( "..."))、DBRef(DBRef( "books"、 "ObjectId(" ... ")); person_ownerships:[{_id: ( "books"、ObjectId( "..."))、...]}]; 書籍:[{_id:...、タイトル: "..."}] –

+0

書籍:[{_id:...、タイトル: "..."}、...] ** out **これを新しいコレクションに入れますか? もしそうなら、並行要求の場合はどうなりますか? 私は** aggr.unwind( "ownership.books"); **でもしようとしましたが、まだ正しい結果を得ていません –

答えて

0

このように思われません!!! Morphiaは参照フィールドで検索しません。 アグリゲーションのIDを参照する別のフィールドを追加する必要がありました。