如何在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更新方法都可以正常工作。