Santhosh S Kashyap
Santhosh S Kashyap

Reputation: 1068

Spring-Boot Mongo Db find all on query

I am using maven project with spring-data-mongodb. I created a model class my model class is

@Id
private String _id;

private String message;

private String possibleAnswer;

private boolean resolved;

private String percenteageMatch;
//Getters and Setters

Then i Created a an iterface with

public interface ContextRepository extends MongoRepository<ContextUnknown, String>{}

Now in my controller i want to find all the contextUnkown documents which are not resolved.

I know the query in mongodb is db.getCollection('ContextUnknown').find({"resolved": true}). I am unable to write it in to spring boot i tried adding Creria

Query query = new Query();
query.addCriteria(Criteria.where("resolved").is(false));
return contextRepository.findAll(query)

This is not working as findall doesn't take query as parameter, i tried the same thing with BasicQuery But still the same issue.

I want to get all the elements which are not resolved Is there any thing i should change so i can get all the elements based on query parameters.

Thanks in advance

Any help is deeply appreciated

Upvotes: 0

Views: 9440

Answers (2)

barbakini
barbakini

Reputation: 3144

If you want to use Query, you have to use it with MongoTemplate. But because your query is simple, you can(spring-data can) easily build it with spring-data. Add one of these methods in your repository interface;

List<ContextUnknown> findByResolvedIsFalse();

List<ContextUnknown> findByResolved(boolean resolved);

Check this link to learn more about query creation using spring repositories. If you could not build query via spring repositories or you need some aggreation etc, You can combine MongoTemplate and spring repository in one interface. You can check this question's answer to learn how to do it.

Upvotes: 1

Mehraj Malik
Mehraj Malik

Reputation: 15854

In the class you are using below code

Query query = new Query();
query.addCriteria(Criteria.where("resolved").is(false));
return contextRepository.findAll(query)

You need MongoTemplate to execute the query.

Do like this

@Autowired
private MongoTemplate mongoTemplate;

List<ContextUnknown> result = mongoTemplate.find(query, ContextUnknown.class);

Upvotes: 0

Related Questions