有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

编辑

我想在只有父元素已知的情况下找到children元素。 我不能用equest(我用的是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) 个答案

  1. # 1 楼答案

    您的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,但前提是你有充分的理由