我试图在一个MongoDB文档中同时更新多个字段,但只更新了一个字段.

这就是我正在做的:

// Define the search query:
DBCollection col = md.getDb().getCollection("user");
BasicDBObject searchQuery = new BasicDBObject("customer_user_id", customer_user_id);

// Define the update query:
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.append("$set", new BasicDBObject().append("birth_year", birth_year);
updateQuery.append("$set", new BasicDBObject().append("country", country);

log.info("Update query: " + updateQuery);
col.update(searchQuery, updateQuery);

不幸的是,只更新了country字段,记录的updateQuery如下所示:

更新查询:{"$set":{"国家":"奥地利"}

推荐答案

我无法证实这一点,但也许你应该试试:

BasicDBObject updateFields = new BasicDBObject();
updateFields.append("birth_year", birth_year);
updateFields.append("country", country);
BasicDBObject setQuery = new BasicDBObject();
setQuery.append("$set", updateFields);
col.update(searchQuery, setQuery);

或者我认为这是非常相同的:

updateQuery.put("$set", new BasicDBObject("country",country).append("birth_year", birth_year));

Mongodb相关问答推荐

无法在Ubuntu 22.04上安装MongoDB 7.0

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

除非满足某个条件,否则Mongo是否按日期排序?

从 Amazon S3(Next.js、Mongodb、Mongoose)删除图像

在 MongoDB 中加入多个集合

Raft Vs MongoDB 初选

如何在 Mongo 聚合管道中获取限制之前的计数

解析命令行时出错:unrecognized option --rest

你如何在 Kubernetes 上设置 Mongo 副本集?

如何解决 ClassNotFoundException:com.mongodb.connection.BufferProvider?

有没有办法将python对象直接存储在mongoDB中而不序列化它们

MongoDB - 投影一个并不总是存在的字段

无法连接到远程 mongodb 服务器

如何获取 Mongoid 文档的所有字段名称?

Mongo按实际上是数字的字符串值排序

如何在 MongoDB 中删除此弃用警告,为什么会这样?

如何在mongoDB中检索其值以特定字符结尾的文档

如何在 Ubuntu 上安装 mongodb-clients 最新版本?

如何在mongoose的嵌套填充中 Select 特定字段

如何从集合中删除除 MongoDB 中的文档之外的所有文档