Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mongo查询以在只知道父元素时获取子元素_Java_Mongodb_Spring Data Mongodb - Fatal编程技术网

Java mongo查询以在只知道父元素时获取子元素

Java mongo查询以在只知道父元素时获取子元素,java,mongodb,spring-data-mongodb,Java,Mongodb,Spring Data Mongodb,编辑 我想在只有父元素已知的情况下查找子元素。 我不能使用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 paren

编辑

我想在只有父元素已知的情况下查找子元素。 我不能使用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;


}

您的java类与结构不同

根据结构:集合名称“child”不应是where条件的一部分,请使用:

query.addCriteria(Criteria.where("refParent").is("parent1"));
基于Java代码:

query.addCriteria(Criteria.where("parent.id").is("parent1"));
有关更多详细信息,请参见参考文档中的示例:

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

public Child {

   String id;

   String name;

   String parentId;

}

或者使用DBRef,但前提是您有很好的理由。

您能否同时显示父文档和子文档的示例?您使用DBRef吗?idParent1是字符串还是对象ID?如果稍后将查询更改为
.is(新ObjectId(“idParent1”)
我不使用DBRef,我实际上使用对象父对象,以便消除混淆,我将idParent1更改为parent1