我使用put方法作为 basicobj.put( “1”,obj.setAddre()+ obj1.setFName()); 更新时我想只更新地址,但这里的enitre值正在更新。键“1”的值正在更新。有什么方法或给我提示只更新地址。 这是我的代码......
public class AccessObjectID{
public static void main(String[] args)throws UnknownHostException {
AccessObject obj1 = new AccessObject();
obj1.setAddre("Sector No:-42,Los Angeles,USA");
obj1.setFirstName("Jack");
obj1.setLName("Reacher");
obj1.setEmail("Jack_reacher@myid.com");
obj1.setPNumber("02024568963");
AccessObject obj2 = new AccessObject();
obj2.setAddre(",USA");
obj2.setFirstName("udsy ");
obj2.setLName("jhkjhkjad");
obj2.setEmail("aisisior@myid.com");
obj2.setPNumber("02024568963");
MongoClient mongoclient = new MongoClient("localhost",27017);
DB dbobj = mongoclient.getDB("demo");
DBCollection colc = dbobj.getCollection("demo_1");
BasicDBObject basicdbobj = new BasicDBObject();
colc.remove(basicdbobj);
basicdbobj.put("1", obj1.getAddress()
+obj1.getFName()
+obj1.getLName()
+obj1.getEmail()
+obj1.getPNumber());
basicdbobj.put("2", obj2.getAddress()
+obj2.getFName()
+obj2.getLName()
+obj2.getEmail()
+obj2.getPNumber());
colc.insert(basicdbobj);
DBCursor db = colc.find();
while(db.hasNext()){
System.out.println(db.next());
}
System.out.println("********************************** \n"+"UPDATE");
obj1.setAddre("Pune,India");
BasicDBObject update = new BasicDBObject();
update.put("1",obj1.getAddress());
BasicDBObject updateobj = new BasicDBObject();
updateobj.put("$set",update);//new BasicDBObject().append("",""));//update);
colc.update(basicdbobj, updateobj);
db = colc.find();
while(db.hasNext()){
System.out.println(db.next());
}
colc.save(basicdbobj);
}
}
答案 0 :(得分:1)
据我所知,您希望替换地址值为" Pune,India"的文档的地址值。如果是这种情况,请尝试以下方法:
BasicDBObject newDocument = new BasicDBObject();
newDocument.append("$set", new BasicDBObject().append("1", "New Address"));
BasicDBObject searchQuery = new BasicDBObject().append("1", "Pune,India");
colc.update(searchQuery, newDocument);