部分更新文档中的字段 - findAndModify删除所有其他字段?

时间:2014-11-11 20:45:07

标签: java mongodb mongodb-query mongo-java

使用MongoTemplate时 - collection.findAndModify它将删除所有文档字段,并仅保留更新的列。
为什么?
如何部分更新文档中的字段?

        DBCollection collection = mongoTemplate.getCollection("company");           
        DBObject query= new BasicDBObject("companyId","1");        
        DBObject update= new BasicDBObject("phoneNumber","404-525-3928");           
        DBObject result = collection.findAndModify(query, update);


此时 - 从公司1中删除所有字段...
解决方法是转到DB,获取公司1文档更新字段并保存...,
但是如果我需要更新10K呢?

1 个答案:

答案 0 :(得分:1)

您需要更新文档中的$set运算符。您在此使用该update operators和其他{{3}},否则您指定的内容将替换当前包含的任何文档:

        DBCollection collection = mongoTemplate.getCollection("company");           
        DBObject query= new BasicDBObject("companyId","1");        
        DBObject update= new BasicDBObject(
            "$set", new BasicDBObject("phoneNumber","404-525-3928")
        );          
        DBObject result = collection.findAndModify(query, update);