来自 MongoDB 文档:
如果update参数仅包含字段和值对,则 update() 方法将现有文档替换为update参数中的文档,但 _id 字段除外。
换句话说,MongoDB 的更新与您描述的完全一样。因此,如果您在测试集合中有此文档:
{ "_id" : "123", "oldfield" : "oldvalue" }
并在 mongo CLI 中运行以下命令:
db.test.update({"_id": "123"}, { newfield : "value" })
新文档将如下所示:
{"_id": "123", "newfield" : "value"}
如果您只想修改某些字段,则可以使用 $set 运算符,该运算符将为一个或多个字段设置值。当您使用 spring 数据时,您应该使用 MongoTemplate 类进行更新:
Query q = new Query(Criteria.where("_id").is("123"));
Update u = Update
.update("newfield", "value")
.set("oldfield", "newvalue");
this.template.findAndModify(query, update, Entity.class);
您可以在此处阅读有关 $set 运算符和 mongodb 更新的信息:http:
//docs.mongodb.org/manual/reference/operators/#_S_set http://docs.mongodb.org/manual/applications/update