编辑Mongodb数组值仅包含字母字符

时间:2017-05-02 14:23:30

标签: mongodb mongodb-query

我在从csv文件导入数据后尝试编辑mongodb集合中的数据。我的一个字段包含字母和数字字符的混合,我想编辑它,使其只包含字母字符,以便查询更容易

所以我想改变这个:

"categories" : [
    "9100005:1:factual",
    "9200041:2:arts_culture_and_the_media",
    "9200055:2:history"
]

进入这个:

"categories" : [
    "factual",
    "arts culture and the media",
    "history"
]

我知道使用$ regex我可以查询某些类别,所以使用:

db.bbc.find( { categories: {$regex: /factual/  }} )

我将所有记录都以“factual”作为一个类别,但我不确定如何使用$ regex查询多个类别,我只是觉得完全避免使用正则表达式会更容易。有谁知道我必须运行什么命令才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:1)

试试这个

 db.test1.find().snapshot().forEach(function (el) {
        for(a in el.Category){
            print(el.Category[a].replace(/[^A-Za-z]/g, ""));
            el.Category[a]=el.Category[a].replace(/[^A-Za-z]/g, "");
        }
       db.test1.save(el); 
});

修改 保留空间只需在正则表达式中添加空格。

您可以使用此行

el.Category[a].replace(/[^A-Za-z]*$/g, "");

处理下划线

el.Category[a].replace(/[^A-Za-z_]*$/g, "");