我已经开始将 spring-data-mongo
用于一个有很多东西需要持久化的应用程序。
我们实际上选择了 mongo,因为它是这样宣传的。现在严重沉迷于 spring,我们发现使用它的一些功能我们的生活非常轻松(对辛勤工作的 spring 数据人员表示敬意)。
但有一点:文档包含超过 60 个字段
。所以我关于速度
和可伸缩性
的问题是spring-data-mongo能否只更新mongo数据库
中的脏字段
code> 就像 Hibernate
一样吗?有点像它的解释here
作者:Arthur Ronald F D Garcia
感谢阅读本文
最佳答案
来自 MongoDB 文档:
If the update argument contains only field and value pairs, the update() method replaces the existing document with the document in the update argument, except for the _id field.
换句话说,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
关于mongodb - Spring Data Mongo 可以只更新文档中的脏字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397833/