假设我们已经有一个名为 myCollection
的集合,其中每个文档都有一个名为 myMap
的字段,它是一个键值对的映射。
要向某个文档的 myMap
字段追加一条数据,可以使用 $set
和 $mergeObjects
操作符来实现。以下是一个示例:
db.myCollection.updateOne(
{ _id: ObjectId("5f42d5c1e2de8026980c6c70") }, // 要更新的文档的条件
{ $set: { myMap: { $mergeObjects: [ "$myMap", { newKey: "newValue" } ] } } } // 新的键值对
);
这将会在满足条件的文档中找到 myMap
字段,并将其与 { newKey: "newValue" }
进行合并。如果原来已经存在 newKey
,则其值会被覆盖;否则,新的键值对会被添加到 myMap
中。
注意,上面的代码使用了 MongoDB 的聚合表达式 $mergeObjects
,因此需要 MongoDB 3.6 或更高版本才能运行。如果你使用的是旧版 MongoDB,可以考虑使用 $addToSet
和 $each
来进行类似的操作,不过这会相对繁琐一些。