我正在使用spring-data-mongodb
的maven项目。我创建了一个模型类,我的模型类是
@Id
private String _id;
private String message;
private String possibleAnswer;
private boolean resolved;
private String percenteageMatch;
//Getters and Setters
然后我用
创建了一个iterfacepublic interface ContextRepository extends MongoRepository<ContextUnknown, String>{}
现在在我的控制器中,我想找到所有未解析的contextUnkown文档。
我知道mongodb中的查询是db.getCollection('ContextUnknown').find({"resolved": true})
。
我无法将其写入弹簧启动我尝试添加Creria
Query query = new Query();
query.addCriteria(Criteria.where("resolved").is(false));
return contextRepository.findAll(query)
这不起作用,因为findall没有将查询作为参数,我使用 BasicQuery 尝试了同样的事情,但仍然是同样的问题。
我想得到所有未解决的元素是否有任何我应该改变的东西,所以我可以根据查询参数获得所有元素。
提前致谢
非常感谢任何帮助
答案 0 :(得分:1)
如果您想使用Query
,则必须将其与MongoTemplate
一起使用。但是因为你的查询很简单,你可以(spring-data can)使用spring-data轻松构建它。在存储库界面中添加其中一个方法;
List<ContextUnknown> findByResolvedIsFalse();
List<ContextUnknown> findByResolved(boolean resolved);
检查this link以了解有关使用spring存储库创建查询的更多信息。如果您无法通过Spring存储库构建查询,或者您需要一些聚合等,则可以将MongoTemplate
和spring存储库组合在一个界面中。您可以查看this question's answer以了解如何操作。
答案 1 :(得分:0)
在您使用以下代码的课程中
Query query = new Query();
query.addCriteria(Criteria.where("resolved").is(false));
return contextRepository.findAll(query)
您需要MongoTemplate
才能执行query
。
这样做
@Autowired
private MongoTemplate mongoTemplate;
List<ContextUnknown> result = mongoTemplate.find(query, ContextUnknown.class);