我开始使用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
}
非常感谢您提前!
答案 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
}
请注意,根据文档结构,返回的属性本身可以是一个映射。因此需要适当的铸造。另外,我不认为文档数据库中每个用户只能有一封电子邮件(由于错误,输入错误等)。它应该在应用程序级别强制执行。