0
我有一个查找问题使用Morphia。 这里是我的代码:Mongorphb 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人查询!
是甚至可能的?那里没有例外!
这是可能的。你可以添加你试图查询的每个集合中的文档吗? – Veeram
人:[{_ id:...,name:...}]; person_ownerships:[{_id:...,p:DBRef(“persons”,ObjectId(“...”)),books:[DBRef(“books”,ObjectId(“...”)),DBRef (“books”,ObjectId(“...”)),...]}]; books:[{_id:...,title:“...”}] –
books:[{_id:...,title:“...”},...] 我们总是有把**放到一个新的集合? 如果是这样的话,会出现什么情况并发请求? 我试图** aggr.unwind(“ownership.books”); **但仍然得到不正确的结果 –