我已经开始将spring-data-mongo
用于需要持久存储的应用程序。
我们实际上选择了mongo,因为它的广告是这样的。现在沉迷于春天,我们发现我们的生活非常容易使用它的一些功能(对于努力工作的弹簧数据人来说是赞誉)。
但有一件事:超过60 fields
的文件。所以我关于speed
和scalability
的问题是,spring-data-mongo只更新dirty fields
中的mongo database
就像Hibernate
那样吗?有点像是如何解释here
按Arthur Ronald F D Garcia
感谢您阅读本文
答案 0 :(得分:3)
来自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