【问题标题】:partially update fields in a document - findAndModify remove all other fields?部分更新文档中的字段 - findAndModify 删除所有其他字段?
【发布时间】:2014-11-11 20:45:06
【问题描述】:

当使用 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 中删除所有字段...
解决方法是转到数据库,获取公司 1 文档更新字段并保存...,
但是如果我需要更新其中的 10K 怎么办?

【问题讨论】:

    标签: java mongodb mongodb-query mongo-java


    【解决方案1】:

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

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

    【讨论】:

    • 工作得很好,谢谢!我用了 collection.update(query,new BasicDBObject("$set", new BasicDBObject("phoneNumber","404-525-3928"))
    猜你喜欢
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2021-09-29
    • 2016-02-17
    • 2021-06-15
    相关资源
    最近更新 更多