我想创建一个java类的数据模型,这样我就可以通过使用类中定义的方法自动获取从mongodb的dbcollection中检索到的数据Model的一些属性。
让我们如果我有一个存储在名为“STUDENT”的mongodb集合中的数据结构,如:
{
"name":"Jone",
"id":"20140314201"
"courses":[
{
"CourseName":"math",
"teacher":"Prof Smith",
"Score":80
},
{
"CourseName":"literature",
"teacher":"Brown"
"Score":58
}
]
}
定义这样的学生班总是很方便:
class Student extends BasicDBObject{
private List<Course> courseList = new ArrayList();
private final String name;
private final String id;
public Student(String _name,String _id){
name = _name;
id = _id;
}
public List<Course> getFailedCourseList(){
List<Course> failedCouseList = blablabla...
return failedCouseList
}
public addCourse(Course _course){
couseList.add(_cousrse);
}
.....
}
问题是我可以做些工作来实现这些目标:
1.将学生项目保存到mongodb时,我可以这样做:
Student studentItem = new Student("Jone","20140314201")
studentItem.addCourse(course1)
studentItem.addCourse(course2)
....
DBC.save(studentItem)
2.从db集合中检索数据时,我可以将BasicDBObject(这是返回的默认对象类型dbcollection findOne
)转换为我定义的Class Student
:
Student studentJone = (Student)DBC.findOne(new BasicDBObject("name":"Jone"));
这样我就可以通过调用Student类的方法来找出哪些课程失败了:
List<Course> failedCourseList = studentJone.getFailedCourseList();
答案 0 :(得分:1)
试试这个:
BasicDBObject query= new BasicDBObject();
query.put("any key","any value"); //THis add criteria
DBObject dbObjectResult = getMongoTemplate().getCollection(COLLECTION)
.findOne(query);
Foo foo = getMongoTemplate().getConverter().read(Foo.class, dbObjectResult);
应该工作
答案 1 :(得分:0)