Json 在mongodb中更新文档

Json 在mongodb中更新文档,json,mongodb,Json,Mongodb,我目前有以下格式的mongodb文档: { "title": "name of the document", "tags" : ["tag1", "tag2", "tag3"] } 我希望能够搜索在标题字段中有“搜索词”的所有文档,然后将“搜索词”附加到标签字段中。有没有一种简单/干净的方法可以做到这一点,而无需重新摄取所有文档,或者在再次将它们插入mongodb之前,我只需编写一个脚本就可以做到这一点 我确实阅读了db.collection.update()的mongodb文档,其

我目前有以下格式的mongodb文档:

{ 
  "title": "name of the document",
  "tags" : ["tag1", "tag2", "tag3"]
}
我希望能够搜索在标题字段中有“搜索词”的所有文档,然后将“搜索词”附加到标签字段中。有没有一种简单/干净的方法可以做到这一点,而无需重新摄取所有文档,或者在再次将它们插入mongodb之前,我只需编写一个脚本就可以做到这一点

我确实阅读了db.collection.update()的mongodb文档,其中有如下示例:

db.people.update(
 { name: "Andy" },
 {
   name: "Andy",
   rating: 1,
   score: 1
 },
 { upsert: true }
)
但这对我没有帮助,因为我不想完全替换我的“tags”字段,而是附加到它

db.people.update(
    { "title": "search_term" }, 
    { "$push": { "tags": "search_term" } }, 
    { "multi": true }
);
通常,我在脚本中对所有数据集等进行迁移/更改,并从管理路径运行

说明:

  • 第一个JSON:搜索过滤器
  • 第二个JSON:推送到数组
  • multi:true
    如果要更新多个文档
编辑: 由于版本
3.2
有一个函数
db.collection.updateMany(过滤器、更新、选项)
,可用于更新多个文档


*未测试

类似于
db.search.update({title:/.*search\u term.*/},{$push:{“tags”:“search\u term”},{multi:true})的内容
。但是因为它更新了多个文档,所以它不会是一个原子更新我想我这里的问题是标题字段不只是包含“搜索词”,而是可能包含像“搜索词搜索词”这样的组合有没有办法匹配这些情况?明白了,在问题注释中使用了查询,直到很久以后才看到它(Doh!)非常感谢你们!你现在应该已经在用了。
db.people.updateMany(
    { "title": "search_term" }, 
    { "$push": { "tags": "search_term" } }
);