有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java在mongodb中更新

我使用put方法作为 巴西科布。放置(“1”,对象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) 个答案

  1. # 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);