Spring-Boot Mongo Db查找所有查询

时间:2017-11-22 06:31:17

标签: spring mongodb spring-boot

我正在使用spring-data-mongodb的maven项目。我创建了一个模型类,我的模型类是

@Id
private String _id;

private String message;

private String possibleAnswer;

private boolean resolved;

private String percenteageMatch;
//Getters and Setters

然后我用

创建了一个iterface
public 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 尝试了同样的事情,但仍然是同样的问题。

我想得到所有未解决的元素是否有任何我应该改变的东西,所以我可以根据查询参数获得所有元素。

提前致谢

非常感谢任何帮助

2 个答案:

答案 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);