Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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
在MongoRepository JAVA SpringBoot中如何基于子映射中的键获取父对象_Java_Mongodb_Spring Boot_Mongodb Query - Fatal编程技术网

在MongoRepository JAVA SpringBoot中如何基于子映射中的键获取父对象

在MongoRepository JAVA SpringBoot中如何基于子映射中的键获取父对象,java,mongodb,spring-boot,mongodb-query,Java,Mongodb,Spring Boot,Mongodb Query,这就是我的对象的外观 @Document("parent") public class Parent { @Id private String id; private String field-1; private Map<String,Long> someMap; } { "_id" : "parent-id", "field-1" : "some value", "someMap" : { "categ

这就是我的对象的外观

@Document("parent")
public class Parent {
    @Id 
    private String id;
    private String field-1;
    private Map<String,Long> someMap;
}


{
    "_id" : "parent-id",
    "field-1" : "some value",
    "someMap" : {
        "category-5" : 123,
        "category-4" : 456
    }
}
此方法返回预期结果

package com.somepackage.services;
package com.somepackage.services;

import org.springframework.stereotype.Service;
import java.util.List;
import com.yourpackagestructure.Parent;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

@Service
public class Service{

   private MongoTemplate mongoTemplate;

   public Service(MongoTemplate mongoTemplate){
    this.mongoTemplate = mongoTemplate;
   }

   public List<Parent> getParentList(String mapKey){
    Query query = new Query();
    query.addCriteria(Criteria.where("someMap." + mapKey).exists(true));
    List<Parent> parents = mongoTemplate.find(query,Parent.class);
   }
}
导入org.springframework.stereotype.Service; 导入java.util.List; 导入com.yourpackagestructure.Parent; 导入org.springframework.data.mongodb.core.MongoTemplate; 导入org.springframework.data.mongodb.core.query.Criteria; 导入org.springframework.data.mongodb.core.query.query; @服务 公务舱服务{ 私有MongoTemplate MongoTemplate; 公共服务(MongoTemplate MongoTemplate){ this.mongoTemplate=mongoTemplate; } 公共列表getParentList(字符串映射键){ 查询=新查询(); query.addCriteria(Criteria.where(“someMap.”+mapKey).exists(true)); List parents=mongoTemplate.find(查询,Parent.class); } }
您看到这个了吗?这是你想要实现的吗?是的,它是相关的,但它是以映射的形式获取某个映射内的元素列表。我想要的是基于该对象内某个映射内的键的完整父对象
db.getCollection('parentCollection').find({"someMap.category-4" : {$exists:true}})
package com.somepackage.services;

import org.springframework.stereotype.Service;
import java.util.List;
import com.yourpackagestructure.Parent;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

@Service
public class Service{

   private MongoTemplate mongoTemplate;

   public Service(MongoTemplate mongoTemplate){
    this.mongoTemplate = mongoTemplate;
   }

   public List<Parent> getParentList(String mapKey){
    Query query = new Query();
    query.addCriteria(Criteria.where("someMap." + mapKey).exists(true));
    List<Parent> parents = mongoTemplate.find(query,Parent.class);
   }
}