在mongodb中更新文档

时间:2016-06-08 17:51:32

标签: json mongodb

我目前在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 }
)

但是这对我没有帮助,因为我不想完全取代我的标签"领域,而是附加到它。

1 个答案:

答案 0 :(得分:3)

db.people.update(
    { "title": "search_term" }, 
    { "$push": { "tags": "search_term" } }, 
    { "multi": true }
);

一般情况下,我会对脚本中的所有数据集等进行迁移/更改,然后从管理路径运行它。

说明:

  • First JSON:搜索过滤器
  • 第二个JSON:推送到数组
  • 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" } }
);

* 未经过测试

相关问题