是否有一种方法可以通过MongoDb的Java驱动程序修改其中一个键的值.我try 了以下方法:

someCollection.update(DBObject query, DBObject update);
someCollection.findAndModify(DBObject query, DBObject update);

但这两个函数都会用更新的文档完全替换查询的文档.在mongo shell中使用$set时,只更新特定键的一个值的方法是什么.(除了制作一份全新的文档,复制所有字段并更新其中一个字段).

推荐答案

试试这样:

BasicDBObject set = new BasicDBObject("$set", new BasicDBObject("age", 10));
set.append("$set", new BasicDBObject("name", "Some Name"));
someCollection.update(someSearchQuery, set);

再看看this example.

Mongodb相关问答推荐

MongoDB聚合:将文档列表转换为列表

在提供的文档(_Id)之后和之前,是否有一个Mongo操作来获取已排序(和/或过滤)集合中的文档计数?

Select 筛选聚合中的嵌套字段

Tableau 与 Mongo DB Atlas by MongoDB 的连接缓存问题

使用特定关键字和邻近度进行查询和过滤

lexik_jwt_authentication下无法识别的选项api_platform

MongoDB:嵌套数组计数+原始文档

如何在 Spring-Data-MongoDB 中使用 $facet、$addFields 和 $function

Spring Data + MongoDB GridFS 可以通过 Repository 访问吗?

无法让 Mongoose.js 子文档数组填充

哪种 NoSQL DB 最适合 OLTP 金融系统?

子文档上的mongoose唯一索引

Mongoose 和新架构:返回ReferenceError: Schema is not defined

Mongoose Schema vs Mongo Validator

Mongoose 不创建新集合

mongo - Ruby连接问题

使用 Jackson 与 Java Mongo DBObject 进行高效 POJO 映射

Mongo:匹配聚合查询中的日期似乎被忽略了

无法使用命令写入模式错误,降级到兼容模式

MongoDB Compass:select distinct field values