簡體   English   中英

如何根據MongoRepository JAVA SpringBoot中的子映射中的鍵獲取父對象

[英]How to get parent object based upon key from child map in MongoRepository JAVA SpringBoot

這就是我的對象的外觀。

@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

我嘗試了以下方法,但對我不起作用

public interface ParentRepo extends MongoRepository<Parent, String> {

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



或者,如果有人可以幫助我將其轉換為MongoRepository/@Query方法,這將是非常棒的,非常感謝這里的目標是將CategoryId作為參數傳遞給查詢

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM