如何在MongoDb中将字段值更新为titleCase?

如何在MongoDb中将字段值更新为titleCase?,mongodb,mongodb-query,Mongodb,Mongodb Query,我需要把名字改成书名 { "firstName" : "GOPAULAKRISHNAN", "middleName" : "", "lastName" : "venkatasan", } 我可以改成小写或大写,但不能改成小写 我使用的查询 db.users.find( {}, { 'fir

我需要把名字改成书名

{    
            "firstName" : "GOPAULAKRISHNAN",
            "middleName" : "",
            "lastName" : "venkatasan",
    }
我可以改成小写或大写,但不能改成小写

我使用的查询

db.users.find( {}, { 'firstName': 1 } ).forEach(function(doc) {
db.users.update(
   { _id: doc._id},
   { $set : { 'firstName' : doc.firstName.titleCase() } },
   { multi: true }
)
});
获取此错误:

uncaught exception: TypeError: doc.firstName.titleCase is not a function :
我甚至尝试过这种方法:

function titleCase(str) {
    return str.toLowerCase().split(' ').map(function(word) {
        return word.replace(word[0], word[0].toUpperCase());
    }).join(' ');
}

db.users.find().forEach(function(doc){
    db.users.updateOne(
        { "_id": doc._id },
        { "$set": { "firstName": titleCase(doc.firstName) } }
    );
});

titleCase
函数为空字符串和空值提供错误

在您的案例中应用toLowerCase等函数之前,只需包括
falsy
值检查

功能滴定酶(str){
返回str&&str.toLowerCase().split(/\s/).map(函数(word){
返回单词&word.replace(单词[0],单词[0].toUpperCase());
}).加入(“”);
}
console.log(titleCase(未定义));
控制台日志(标题框(“”);
log(titleCase(null));

console.log(标题酶(“NAMAR”)您的第二个过程“我甚至尝试了这个方法:…”效果很好。那么,问题出在哪里呢?E QUERY[js]TypeError:word[0]未定义:titleCase/这就是我得到的错误。我从
mongo
shell运行了你的代码(第二个版本)。JavaScript函数
titleCase(str)
mongo
shell更新方法都可以正常工作。