2015-06-23 66 views
0

我使用put方法作为 basicobj.put(“1”,obj.setAddre()+ obj1.setFName()); 在更新时,我只想更新地址,但在此处的值正在更新。正在更新密钥“1”的值。有没有任何方法或给我提示只更新地址。 这里是我的代码...使用java更新mongodb

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("[email protected]"); 
    obj1.setPNumber("02024568963"); 

    AccessObject obj2 = new AccessObject(); 
    obj2.setAddre(",USA"); 
    obj2.setFirstName("udsy "); 
    obj2.setLName("jhkjhkjad"); 
    obj2.setEmail("[email protected]"); 
    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); 
} 
} 

回答

1

据我了解,你正在寻找替换具有地址值“印度普纳”的文件的地址值。如果是这样的话请尝试以下操作:

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

呀,使用$设置为仅更新特定领域 –

+0

部门编号:-42,洛杉矶,美国这个地址我想更新,但问题是,对“1”键IM具有整个值i,e;输出如下所示: - {“_id”:{“$ oid”:“55891e47c018ab3d78ebeb28”},“1”:“Sector No:-42,Los Angeles,USAJackReacherJack_reacher @ myid.com02024568963”当我更新整个事情得到更新,但我只想要地址更新而不是重置的东西 –