大家好我正在使用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);
}
我读了this块来更新mongo中的数据
答案 0 :(得分: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);
答案 1 :(得分: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);
答案 2 :(得分: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);
答案 3 :(得分:0)
如果您使用的是mongoTemplate,那么直接发送您的java POJO对象(其中将包含mongoID) 例如:要更新的对象将是
{
"id":"16 digit mongodb autogenerated id",
"name":"something",
"age":"something"
}
假设您要更新此内容, 使用以上三个字段在Java中创建pojo类,然后发送..
在DAO, 简单的做,
this.mongoTemplate.save(objectOfPojoType);
由于您的对象包含已存在于mongoDB中的mongoID, 所以即使使用save方法也会更新,而不是创建新的