使用java在mongodb中更新

时间:2015-06-23 07:40:22

标签: java mongodb mongodb-query

我使用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);
 }
 }

1 个答案:

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