我有一个名为Profiles的集合,其中包含一个名为emails的数组。
我想将数组中的所有电子邮件字符串更改为小写。
db.Profiles.update({"emails":/@/i}, {$set: {"emails" : emails.toLowerCase()}}})
错误:
1月29日16:52:28 SyntaxError:missing)在参数列表(shell)之后:1
我也发现了这个:
db.Profiles.find().forEach(
function(e) {
e.emails = e.emails.toLowerCase();
db.Profiles.save(e);
}
)
错误:
Tue Jan 29 16:51:41 TypeError:e.emails.toLowerCase不是函数(shell):3
提前感谢您的帮助。
答案 0 :(得分:5)
您需要小写电子邮件数组中的每个字符串。 string []中没有toLowerCase函数。
示例:
db.Profiles.find().forEach(
function(e) {
for(var i = 0; i < e.emails.length; i++){
e.emails[i] = e.emails[i].toLowerCase();
}
db.Profiles.save(e);
});
答案 1 :(得分:1)
我找到了一种更简单快捷的方法
db.Profiles.find({email : { $exists: true}}).forEach(
function(e) {
e.email = e.email.toLowerCase();
db.Profiles.save(e);
});
答案 2 :(得分:0)
db.collectionname.find({ "Key_name": {$ne:null} }).forEach(function(doc)
{
db.collectionname.update(
{ _id: doc._id },
{ "$set": { "Key_name": doc.Key_name.toLowerCase() } }
);
});