【问题标题】:MongoShell query to MongoRepositoryMongo Shell 查询到 MongoRepository
【发布时间】:2020-01-21 08:37:32
【问题描述】:
db.getCollection('parentCollection').find({"mapObject.someField" : {$exists: true}})

我希望将其转换为如下方法 .

@Query("{mapObject.someField :{$exists : true}}")
List<Parent> findByMapKey(String id);

运行应用程序时出现空指针异常

@Query("{mapObject.someField :{$exists : true}}")
here someField needs to be dynamic not fixed so i want my id to be passed in place of someField

这里也存在同样的问题 How to get parent object based upon key from child map in MongoRepository JAVA SpringBoot

【问题讨论】:

    标签: java mongodb mongodb-query


    【解决方案1】:

    不可能使用 MongoRepository。请改用MongoTemplate

    【讨论】:

    • 你有类似例子的链接吗?
    • 我发了一个例子,点击MongoTemplate链接
    【解决方案2】:

    如上所述,@Valijon 无法使用 @Query 注释。如果有人找到方法,请分享。以下是我使用 MongoTemplate

    实现它的方法
    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);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 2017-10-24
      • 2019-09-16
      • 2015-11-18
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多