查询spring数据mongo存储库

时间:2017-10-02 09:14:26

标签: java mongodb spring-boot

我想在spring数据mongodb上编写自定义查询。像这样:

public interface CarRepo extends MongoRepository<Car, String> {


  @Query("select distinct(brand) from Car ")
  public List<String> findDistinctBrand();
}

但它正在抛出错误“Caused by: com.mongodb.util.JSONParseException:”。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

MongoDB不支持distinct命令。 它仅支持使用distinct命令返回不同的字段值。

您需要使用Mongodb模板,以获得结果:

DBCollection colllection = mongoTemplate.getCollection("collectionName");
Criteria criteria = new Criteria();
criteria.where("your column").is("your value");
Query query = new Query();
query.addCriteria(criteria);
List list = mongoTemplate.getCollection("collectionName")
    .distinct("source",query.getQueryObject());

答案 1 :(得分:0)

对于每个the docs,您应该能够通过简单地在存储库界面中定义方法而无需@Query的帮助来完成此任务:

public interface CarRepo extends MongoRepository<Car, String> {
    public List<String> findDistinctBrand();
}

答案 2 :(得分:-1)

您正在使用SQL在mongodb中进行查询,但mongodb有自己的查询语言。您需要使用该语言编写查询。当您打算使用distinct命令时,您无法使用Query注释或弹簧数据查询来执行此操作。您需要使用MongoTemplate创建自定义存储库并执行不同的命令。