替换MongoDB集合中的字符而不保存更改。

时间:2015-01-23 13:09:37

标签: node.js mongodb mongoose

我有以下格式的companiesmodels MongoDB集合:

[{company:'Any company', models:['Model1','model2','model3']},
 ...
{company:'Any-company', models:['model83','Model-abc','MODEL43']}]

正如您所看到的,companymodel名称中的一些是大写字母或使用短划线符号编写的。

我想将这个集合保存到变量中,我需要它是小写而不是破折号。

我只使用mongoose findfor loop这样做:

mongoose.model('Company', companySchema).find({}, function(err, docs) {
    if (err) {
        console.log(err);
    } else {
        var companyLowerCase = docs;
        for(var i=0;i<companyLowerCase.length;i++) {
            companyLowerCase[i].company = companyLowerCase[i].company.replace(/-/g, " ").toLowerCase();
            for(var j=0;j<companyLowerCase[i].models.length;j++) {
                companyLowerCase[i].models[j] = companyLowerCase[i].models[j].replace(/-/g, " ").toLowerCase();
            }
        }
    }
});

但我想知道是否有可能用MongoDB实现。我发现你可以像这样小写你的值:

db.inventory.aggregate([{
   $project:
     {
       item: { $toLower: "$item" },
       description: { $toLower: "$description" }
     }
 }]);

但您可以使用MongoDB替换"-"上的" "吗?如果可以,那么我应该向MongoDB发送什么请求以实现我的目标?

注意:数据库中的集合不应更改。修改必须仅保存在变量中。

1 个答案:

答案 0 :(得分:2)

我认为你不能,因为MongoDB没有$project

的替换运算符