From my Java application, I have stored the values in mongoDB in ArrayList(set of Java objects). How can I retrieve the data from DBObject
I am storing the data in mong
You can do it as follows :
List<Student> students = new ArrayList<Student>();
BasicDBObject query = new BasicDBObject();
query.put("user", username);
DBCursor cursor = theCollection.find(query);
while (cursor.hasNext()) {
DBObject theObj = cursor.next();
//How to get the DBObject value to ArrayList of Java Object?
BasicDBList studentsList = (BasicDBList) theObj.get("students");
for (int i = 0; i < studentsList.size(); i++) {
BasicDBObject studentObj = (BasicDBObject) studentsList.get(i);
String firstName = studentObj.getString("firstName");
String lastName = studentObj.getString("lastName");
String age = studentObj.getString("age");
String gender = studentObj.getString("gender");
Student student = new Student();
student.setFirstName(firstName);
student.setLastName(lastName);
student.setAge(age);
student.setGender(gender);
students.add(student);
}
}
You generally use an ORM tool for that (though it wouldn't be meaningful to call it ORM in the case of a non relational database).
There are several such tools. I like spring-data, which hides a lot of boiler plate code for you and gives you a simple, clean syntax. Something like this:
@Repository
public class UserRepositoryImpl implements UserRepository {
private MongoTemplate mongoTemplate;
@Autowired
public UserRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public User findsUserByUsernameAndPassword(String userName, String encodedPassword) {
return mongoTemplate.findOne(query(where("userName").is(userName).and("encodedPassword").is(encodedPassword)), User.class);
}
}
With the User
class defined as:
@Document(collection = "users")
public class User {
private String userName;
private String encodedPassword;
// snip getters and setters
}