我目前在mongodb中有以下格式的文档:
{
"title": "name of the document",
"tags" : ["tag1", "tag2", "tag3"]
}
我希望能够搜索所有包含" search_term"在他们的标题字段中,然后追加" search_term"进入他们的标签字段。有没有一种简单/干净的方法可以在不重新摄取我的所有文档的情况下执行此操作,或者在将它们重新插入mongodb之前我是否必须编写一个脚本来执行此操作?
我确实阅读了db.collection.update()的mongodb文档,其中包含以下示例:
db.people.update(
{ name: "Andy" },
{
name: "Andy",
rating: 1,
score: 1
},
{ upsert: true }
)
但是这对我没有帮助,因为我不想完全取代我的标签"领域,而是附加到它。
答案 0 :(得分:3)
db.people.update(
{ "title": "search_term" },
{ "$push": { "tags": "search_term" } },
{ "multi": true }
);
一般情况下,我会对脚本中的所有数据集等进行迁移/更改,然后从管理路径运行它。
说明:
multi: true
如果您想要更新多个文档编辑:
从版本3.2
开始,有一个函数db.collection.updateMany(filter, update, options)
可用于更新多个文档。
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
db.people.updateMany(
{ "title": "search_term" },
{ "$push": { "tags": "search_term" } }
);
* 未经过测试