如何根据MongoRepository JAVA SpringBoot中的子映射中的键获取父对象 [英] How to get parent object based upon key from child map in MongoRepository JAVA SpringBoot

查看:66
本文介绍了如何根据MongoRepository JAVA SpringBoot中的子映射中的键获取父对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这就是我的对象的样子.

This is how my object looks.

@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
    }
}

当我使用 "category-5""category-4" 进行搜索时,我想获得整个对象.我正在使用 MongoRepositorySpringBoot.

I want to get this entire object when i search with "category-5" or "category-4". I am using MongoRepository and SpringBoot.

我尝试了以下方法,但对我不起作用

I tried following approach but its not working for me

public interface ParentRepo extends MongoRepository<Parent, String> {

    @Query("{someMap :{$in: [?0]}}")
    List<Parent> findBySomeMap(String id);
}



或者如果有人可以帮助我将其转换为 MongoRepository/@Query 方法,那将是非常棒的,非常感谢这里的目标是将 CategoryId 作为参数传递给查询



or if anyone can help me to convert this into MongoRepository/@Query method that would be great and much appreciated Goal here is to pass CategoryId as a parameter to query

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);
   }
}

这篇关于如何根据MongoRepository JAVA SpringBoot中的子映射中的键获取父对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆