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

Replace character in MongoDB collection without saving changes.

我有 MongoDB 个 companiesmodels 的集合,格式如下:

[{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 发送什么请求来实现我的目标?

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

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

的替换运算符