0

大家好,我正在使用 java 开发 mongoDB。我成功地完成了连接插入并从 mongoDB 检索值,但是当我尝试更新数据时,我的代码无法正常工作。

我的代码是:

public static Result updateprofile() throws UnknownHostException 
{
    final  DynamicForm profileform=form().bindFromRequest();
    final  String username1 = profileform.get("username");
    final  String password1 = profileform.get("password");
    final  String email1 = profileform.get("email");
    final  String userid = session("userid");
    MongoClient mongo=new MongoClient("localhost",27017);

    DB db = mongo.getDB("webportal"); 
    DBCollection coll=db.getCollection("userdb");
    BasicDBObject doc2=new BasicDBObject("_id", userid);
    BasicDBObject doc1=new BasicDBObject();
    doc1.append("username", username1);
    doc1.append("username", username1);
    doc1.append("password", password1);
    doc1.append("email",email1 );
    BasicDBObject doc3=new BasicDBObject("$set",doc1);
    coll.update(doc2, doc3);
    return ok(userid+username1);        
}

我读了这个块来更新 mongo 中的数据

4

4 回答 4

2

可以试试这个。

ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");        
BasicDBObject searchQuery = new BasicDBObject();        
searchQuery .put("_id", id); 

BasicDBObject updateDocument = new BasicDBObject();
updateDocument .append("$set", new BasicDBObject("username", username1));

coll.update(searchQuery , updateDocument);
于 2013-08-08T07:42:29.303 回答
1

这个对我有用:

BasicDBObject doc1 = new BasicDBObject();
doc1.append("$set", new BasicDBObject("username", username1)
    .append("password", password1)
    .append("email", email1));
BasicDBObject doc2 = new BasicDBObject("_id", userid);
coll.update(doc2, doc1);
于 2013-08-08T06:53:14.903 回答
0

我根据 shakthydoss 和 orid 给出的内容进行了一些更改。这是我的解决方案:

MongoClient mongo=new MongoClient("localhost",27017);
DB db = mongo.getDB("webportal"); 
DBCollection coll=db.getCollection("userdb");
BasicDBObject doc2 = new BasicDBObject();
doc2.put("_id",userid);
BasicDBObject updateDocument = new BasicDBObject();
updateDocument .append("$set", new BasicDBObject("username", username1).append("password", password1).append("email", email1));
coll.update(doc2, updateDocument);
于 2013-08-09T10:31:17.517 回答
0

如果您使用的是 mongoTemplate,则直接发送您的 java POJO 对象(其中将包含 mongoID),例如:要更新的对象将是

{
   "id":"16 digit mongodb autogenerated id",
    "name":"something",
    "age":"something"
}

假设你想更新它,在 Java 中创建包含以上三个字段的 pojo 类,然后发送..

在 DAO 中,简单的做,

this.mongoTemplate.save(objectOfPojoType);

由于您的对象包含 mongoID 已经存在于 mongoDB 中,因此即使使用 save 方法它也会更新,而不是创建新的

于 2018-02-16T11:20:28.927 回答