我想在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:
”。我怎样才能做到这一点?
答案 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
创建自定义存储库并执行不同的命令。