当只知道父元素时,mongo查询获取子元素

时间:2014-02-03 13:54:50

标签: java mongodb spring-data-mongodb

已编辑

我想在只知道父元素时找到children元素。 我无法进行征服(我正在使用mongodb) 结构如下:

collection: parent2

parent1  
    id: idParent1   name : parentName1  //no ref to the children elements
parent2  
    id: idParent2   name : parentName2  //no ref to the children elements
parent3 
    id: idParent3   name : parentName3   //no ref to the children elements


collection: children

child1
    id: idChild1   refParent:   parent1
    id: idChild2   refParent:   parent2
    id: idChild3   refParent:   parent3
    id: idChild4   refParent:   parent3
    id: idChild5   refParent:   parent1

请求类似于

 Query query = new Query();
 query.addCriteria(Criteria.where("child.refParent").is("parent1")); //not working 
 return mongoTemplate.find(query, Chidren.class);

我用来创建集合的java类是:

public Parent{

  String id;

  String name; 

}



public Child {

   String id;

   String name;

   Parent parent;


}

1 个答案:

答案 0 :(得分:0)

您的java类与结构不同。

基于结构:集合名称" child"不应该是where标准的一部分,使用:

query.addCriteria(Criteria.where("refParent").is("parent1"));

基于Java代码:

query.addCriteria(Criteria.where("parent.id").is("parent1"));

有关详细信息,请参阅参考文档中的示例:

http://docs.spring.io/spring-data/data-mongodb/docs/current/reference/htmlsingle/#mongodb-getting-started

但是你真的把整个父母存放在每个孩子身上吗?这绝对不是在文档数据库中建模数据的正确方法。你应该拥有的是

public Child {

   String id;

   String name;

   String parentId;

}

或使用DBRef,但前提是你有充分的理由。