有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中将mongodb查询结果强制转换为数据模型类

我想创建一个java类的数据模型,这样我就可以使用类中定义的方法自动获取从mongodb的dbcollection中检索到的数据模型的一些属性

假设我在mongodb集合中存储了一个名为“STUDENT”的数据结构,比如:

{
   "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 collection检索数据时,我可以将BasicDBObject(这是返回的默认对象类型dbcollectionfindOne)转换为Class Student我定义:

Student studentJone = (Student)DBC.findOne(new BasicDBObject("name":"Jone"));

这样我就可以通过调用学生类的一个方法来找出哪些课程失败了:

List<Course> failedCourseList = studentJone.getFailedCourseList();

共 (2) 个答案

  1. # 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);
    

    应该是工作