我使用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()才能通过。但管道仍然没有返回。
我必须通过传递人来查询这个!!!
甚至可能吗?那里没有例子!!!
答案 0 :(得分:0)
似乎这不可能! Morphia不会在参考字段上查找。 我不得不在另一个引用人员ID的字段中进行聚合工作!!!