bla*_*sei 7 mongodb spring-data spring-data-mongodb
我已经开始使用spring-data-mongo一个有很多东西要持久化的应用程序。
我们实际上选择了 mongo,因为它是这样宣传的。现在严重沉迷于 spring,我们发现使用它的一些功能非常轻松(为辛勤工作的 spring 数据人员点赞)。
但是有一件事:一个带有 over 的文档60 fields。所以我的问题有关speed,并scalability是可弹簧数据蒙戈只更新dirty fields中mongo database就像Hibernate是吗?有点像这里
的解释Arthur Ronald F D Garcia
感谢您阅读本文
小智 5
来自 MongoDB 文档:
如果update参数仅包含字段和值对,则 update() 方法将现有文档替换为update参数中的文档,_id 字段除外。
换句话说,MongoDB 的更新与您描述的完全一样。因此,如果您在测试集合中有此文档:
{ "_id" : "123", "oldfield" : "oldvalue" }
Run Code Online (Sandbox Code Playgroud)
并在 mongo CLI 中运行以下命令:
db.test.update({"_id": "123"}, { newfield : "value" })
Run Code Online (Sandbox Code Playgroud)
新文档将如下所示:
{"_id": "123", "newfield" : "value"}
Run Code Online (Sandbox Code Playgroud)
如果您只想修改某些字段,您可以使用 $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);
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关 $set 运算符和 mongodb 更新的信息:http : //docs.mongodb.org/manual/reference/operators/#_S_set http://docs.mongodb.org/manual/applications/update