如何批量更新 MongoDB 字符串数组以用连字符替换空格?

Posted

技术标签:

【中文标题】如何批量更新 MongoDB 字符串数组以用连字符替换空格?【英文标题】:How to bulk update a MongoDB string array to replace space with a hyphen? 【发布时间】:2020-03-28 16:02:37 【问题描述】:

我有一个名为companies 的集合,它有一个名为categories 的数组类型。

如何将所有类别数组中的空格('')替换为'-'?

我必须用 cmd 来做这个

这实际上是我想要做的

更新公司集 Categories=Categories.replace(" ","-")

【问题讨论】:

您必须遍历并更新每个文档。 如果您发布您的语言和/或您一直在处理的一些代码 - 它也可以让您更快地获得结果。 【参考方案1】:

我假设您的数据如下所示


    "_id" : ObjectId("5e7f809623d919fb0fc776a5"),
    "categories" : [ 
        "mayur ", 
        " wadekar ", 
        " ***"
    ]

如果您想替换第一次出现的空格,请使用

db.companies.find().forEach(function(e,i) 
    var data = e.categories
    for (var i = 0; i < data.length; i++) 
        e.categories[i] = e.categories[i].replace(" ","-");
    
    db.companies.save(e);
);

如果要替换所有空格,请使用

db.companies.find().forEach(function(e,i) 
    var data = e.categories
    var find = " "; // find for space in whole string
    var re = new RegExp(find, 'g');
    for (var i = 0; i < data.length; i++) 
        e.categories[i] = e.categories[i].replace(re,"-");
    
    db.companies.save(e);
);

【讨论】:

非常感谢您的回答。你知道windows cmd怎么办吗? 您可以直接在数据库控制台上触发查询。【参考方案2】:

魔神

蒙哥

使用您的数据库名称

var bulk = db.Companies.initializeUnorderedBulkOp();

bulk.find(MainCategories: null ).update( $set: MainCategories:[Key:"Uncategorized",Value:"uncategorized"]);

bulk.execute();

【讨论】:

我认为最初的问题是关于将 ["Category One", "Something Else"] 更改为 ` ["Category-One", "Something-Else"]` -- 用连字符替换空格。类似于:gsub(' ', '-')

以上是关于如何批量更新 MongoDB 字符串数组以用连字符替换空格?的主要内容,如果未能解决你的问题,请参考以下文章

用 Javascript 中的键值对重构对象数组并输出或发出它以用 mongoose 和 MongoDB 保存它?

mongodb批量更新操作文档的数组键

mongodb用变量更新数组

Thinkphp怎么批量更新数据

Thinkphp怎么批量更新数据

如何匹配 MongoDB 中嵌入式数组或文档中的字符串?