使用MongoDB Java将DBObject转换为POJO

时间:2014-11-04 22:40:29

标签: java mongodb

我开始使用MongoDb并开发一个连接到这个Mongo数据库的小型Web应用程序。 我有一个DAO,其方法是根据分配给用户的电子邮件地址从数据库中查找用户。每个用户都应该有一个唯一的电子邮件地址,因此我可以假设我只能获得一个文档。然后如何将DBObject转换为User实体?

这是我的代码:

@Override
public User findUserByEmailAddress(String email) {
    DB db=MongoHelper.getDb();


    BasicDBObject query = new BasicDBObject(); 
    query.put("email", email);
    DBCollection users=db.getCollection("users");
    DBCursor cursor = users.find(query);

    DBObject user=cursor.next();

  //Code to convert the DBObject to a User and return the User
}

非常感谢您提前!

1 个答案:

答案 0 :(得分:1)

DBObject是一张地图,因此您只需通过相应的密钥访问即可获得所需的值。

例如:

DBObject query = QueryBuilder.start("email").is(email).get();
DBCursor cursor = users.find(query);

while (cursor.hasNext()) {

   DBObject user = cursor.next();
   String firstName = (String)user.get("first_name");
   String lastName = (String)user.get("last_name");

   //TODO: use extracted properties to build User object   
}

请注意,根据文档结构,返回的属性本身可以是一个映射。因此需要适当的铸造。另外,我不认为文档数据库中每个用户只能有一封电子邮件(由于错误,输入错误等)。它应该在应用程序级别强制执行。