MongoDB更新文档时如何设置单个值而非数组类型?
解决MongoDB中consumer字段设置为单个值的问题
你当前使用的addToSet和push都是MongoDB专门针对数组类型字段的更新操作,所以会自动将consumer字段创建为数组并添加元素。要给字段设置单个值,直接使用Updates.set()方法即可,它会直接将字段赋值为单个值,而非数组。
修改后的Java代码如下:
MongoCollection<Document> collection = ... Bson filter = Filters.eq("query", queryName); // 用set替代addToSet,直接设置单个值 Bson update = Updates.set("consumer", position); collection.findOneAndUpdate(filter, update);
执行后,数据库中的文档会变为:
{ "_id" : ObjectId(...), "query" : "1000", "consumer" : NumberLong(88760), "producer" : NumberLong(88760) }
补充说明
- 如果文档原本不存在
consumer字段,set会直接新增该字段并赋值为单个值; - 如果原本
consumer是数组类型,set会覆盖原有数组,将其替换为你传入的单个值。
内容的提问来源于stack exchange,提问作者user13847890
相关产品推荐
相关产品推荐

