1

I have an existing mongo collection called Test collection

{"_id":{"$oid":"61519700c4863cc61e773e65"},"question_id":"Q1","question_category":"MCQ","qustion":"QQQQQQQ1","sequence":1,"status":"ACTIVE","created_by":"","creation_ts":"","last_modified_by":"","last_modofied_ts":"","topic":"Loan History","categories":"Financial","conditions":[],"options":[{"option_id":"Q1_A1","description":"option 1"},{"option_id":"Q1_A2","description":"option 2"},{"option_id":"Q1_A3","description":"option 3"}]}

I have created a model class for the same to fetch the data

package com.example.springbootdatamongodb.model;

import java.util.Arrays;

public class Test {
    private String question_id;
    private String question_category;
    private String qustion;
    private String sequence;
    private String status;
    private String created_by;
    private String creation_ts;
    private String last_modified_by;
    private String last_modofied_ts;
    private String topic;
    private String categories;
    private String[] conditions;
    private String[] options;

    public Test(String question_id, String question_category, String qustion, String sequence, String status, String created_by, String creation_ts, String last_modified_by, String last_modofied_ts, String topic, String categories, String[] conditions, String[] options) {
        this.question_id = question_id;
        this.question_category = question_category;
        this.qustion = qustion;
        this.sequence = sequence;
        this.status = status;
        this.created_by = created_by;
        this.creation_ts = creation_ts;
        this.last_modified_by = last_modified_by;
        this.last_modofied_ts = last_modofied_ts;
        this.topic = topic;
        this.categories = categories;
        this.conditions = conditions;
        this.options = options;
    }

    public String getQuestion_id() {
        return question_id;
    }

    public void setQuestion_id(String question_id) {
        this.question_id = question_id;
    }

    public String getQuestion_category() {
        return question_category;
    }

    public void setQuestion_category(String question_category) {
        this.question_category = question_category;
    }

    public String getQustion() {
        return qustion;
    }

    public void setQustion(String qustion) {
        this.qustion = qustion;
    }

    public String getSequence() {
        return sequence;
    }

    public void setSequence(String sequence) {
        this.sequence = sequence;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getCreated_by() {
        return created_by;
    }

    public void setCreated_by(String created_by) {
        this.created_by = created_by;
    }

    public String getCreation_ts() {
        return creation_ts;
    }

    public void setCreation_ts(String creation_ts) {
        this.creation_ts = creation_ts;
    }

    public String getLast_modified_by() {
        return last_modified_by;
    }

    public void setLast_modified_by(String last_modified_by) {
        this.last_modified_by = last_modified_by;
    }

    public String getLast_modofied_ts() {
        return last_modofied_ts;
    }

    public void setLast_modofied_ts(String last_modofied_ts) {
        this.last_modofied_ts = last_modofied_ts;
    }

    public String getTopic() {
        return topic;
    }

    public void setTopic(String topic) {
        this.topic = topic;
    }

    public String getCategories() {
        return categories;
    }

    public void setCategories(String categories) {
        this.categories = categories;
    }

    public String[] getConditions() {
        return conditions;
    }

    public void setConditions(String[] conditions) {
        this.conditions = conditions;
    }

    public String[] getOptions() {
        return options;
    }

    public void setOptions(String[] options) {
        this.options = options;
    }


    @Override
    public String toString() {
        return "Test{" +
        "question_id='" + question_id + '\'' +
        ", question_category='" + question_category + '\'' +
        ", qustion='" + qustion + '\'' +
        ", sequence='" + sequence + '\'' +
        ", status='" + status + '\'' +
        ", created_by='" + created_by + '\'' +
        ", creation_ts='" + creation_ts + '\'' +
        ", last_modified_by='" + last_modified_by + '\'' +
        ", last_modofied_ts='" + last_modofied_ts + '\'' +
        ", topic='" + topic + '\'' +
        ", categories='" + categories + '\'' +
        ", conditions=" + Arrays.toString(conditions) +
        ", options=" + Arrays.toString(options) +
        '}';
    }
}

I have also created TestRepository

package com.example.springbootdatamongodb.repository;

import com.example.springbootdatamongodb.model.Test;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

public interface TestRepository extends MongoRepository<Test,String> {
   List<Test> findBySequence(String sequence);
}

This is my controller method

 @GetMapping("/tutorials/{id}")
 public ResponseEntity<List<Test>> getTutorialById(@PathVariable("id") String id) {
    List<Test> tutorialData = testRepository.findBySequence(id);

    if (tutorialData.isEmpty()) {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    } else {
        return new ResponseEntity<>(tutorialData,HttpStatus.OK);

    }

}

But I am not able to fetch any data from mongo. I want to fetch data from the mongo collection on the basis of sequence.

I have also tried to add data with the save method

{"_id":{"$oid":"61629f969c9b77073f02cde2"},"question_id":"Q1","question_category":"MCQ","qustion":"QQQQQQQ1","sequence":"1","status":"ACTIVE","created_by":"","creation_ts":"","last_modified_by":"","last_modofied_ts":"","topic":"Loan History","categories":"Financial","conditions":[],"options":[],"_class":"com.example.springbootdatamongodb.model.Test"}

when i inserted the data from java code it added "_class":"com.example.springbootdatamongodb.model.Test" field to the collection and after this i am able to fetch this data, but still existing data i am not able to pull

1 Answer 1

1

There are couple of basic thing u missed. You didn't tell which collection you are looking for.

@Document(collection="Test") // collection name
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Test {
    private String question_id;
    private String question_category;
    private String qustion;
    private String sequence;
    private String status;
    private String created_by;
    private String creation_ts;
    private String last_modified_by;
    private String last_modofied_ts;
    private String topic;
    private String categories;
    private String[] conditions;
    private String[] options;
}

We use Lombok which reduces the code. You don't need to generate the long code (getters/ setters/ toString()) as you posted above.

And from the given document the sequence :1 which is an Integer. But you model says its a private String sequence;. Verify it and change the data type according to it.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.