Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java更新MongoDb中的数据?_Java_Mongodb - Fatal编程技术网

如何用Java更新MongoDb中的数据?

如何用Java更新MongoDb中的数据?,java,mongodb,Java,Mongodb,大家好,我正在使用java开发mongoDB。我成功地从mongoDB插入和检索了连接值,但当我尝试更新数据时,我的代码无法工作 我的代码是: public static Result updateprofile() throws UnknownHostException { final DynamicForm profileform=form().bindFromRequest(); final String username1 = profileform.get("us

大家好,我正在使用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中读取数据更新块

这一块对我有用:

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);

这一个对我有用:

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);

请试试这个

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);

请试试这个

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);

我根据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);

我根据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);

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

{
   "id":"16 digit mongodb autogenerated id",
    "name":"something",
    "age":"something"
}
假设你想更新这个, 用Java创建包含上述三个字段的pojo类,然后发送

在道中, 简单的做

this.mongoTemplate.save(objectOfPojoType);
由于您的对象包含mongoDB中已经存在的mongoID,
因此,即使使用save方法,它也会更新,而不是创建新方法。如果您使用的是mongoTemplate,则直接发送java POJO对象(其中将包含mongoID) 例如:要更新的对象将

{
   "id":"16 digit mongodb autogenerated id",
    "name":"something",
    "age":"something"
}
假设你想更新这个, 用Java创建包含上述三个字段的pojo类,然后发送

在道中, 简单的做

this.mongoTemplate.save(objectOfPojoType);
由于您的对象包含mongoDB中已经存在的mongoID,
所以即使使用save方法,它也会更新,与创建新的相比

谢谢您的回答或我在我的代码中更改了以上代码,但问题仍然相同。谢谢您的回答或我在我的代码中更改了以上代码,但问题仍然相同。非常感谢您回答我的问题,先生,但当我使用Objectid时,它显示了我的错误??我遇到了此错误[IllegalArgumentException:无效的ObjectId[DCZ8HFLSWFYLUP5JG6L]]还有一件事,当我在mongo文档中看到id时,我会看到一个api com.mongodb.ObjectId,当我尝试导入它时,它不会在我的项目中导入??import org.bson.types.ObjectId;我导入这个包,然后再次运行代码,但仍然有相同的错误。我正在使用字符串变量从id获取值,这有问题吗先生,非常感谢您回答我的问题,先生,但是当我使用Objectid时,它显示了错误??我得到了这个错误[IllegalArgumentException:invalid Objectid[DcZ8hFlSwfwylUP5jG6L]]还有一件事,当我在mongo文档中看到id时,我会看到一个api com.mongodb.ObjectId,当我尝试导入它时,它不会在我的项目中导入??import org.bson.types.ObjectId;我导入这个包,然后再次运行代码,但仍然有相同的错误。我正在使用字符串变量从id获取值,这有问题吗字符串变量,先生。