mongodb - Spring Data Mongo 可以只更新文档中的脏字段吗?

标签 mongodb spring-data spring-data-mongodb

我已经开始将 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/

相关文章:

php - 从 PHP 插入时在 MongoDB 上执行 JS

node.js - Mongoose 请求未被其他文档引用的文档

java - Spring 数据JPA : query ManyToMany

spring - 如何从 spring-data mongodb 扩展 SimpleMongoRepository?

mongodb - getMappedResults() 没有正确映射原始结果

mongodb - 使用 struct & mongodb/mongo-go-driver 更新/替换 mongodb 文档

java - 如何覆盖 Spring Data CrudRepository 上的删除方法?

java - 如何指定仅需要使用 ReactiveCassandraRepository 插入实体的几个字段

mongodb - Spring数据mongodb不关闭mongodb连接

ios - 如何使用 Objective-C 初始化嵌套的 Node.js 模式