2

我有一个名为 Profiles 的集合,其中包含一个名为 emails 的数组。

我想将数组中的所有电子邮件字符串更改为小写。

db.Profiles.update({"emails":/@/i}, {$set: {"emails" : emails.toLowerCase()}}})

错误:

1 月 29 日星期二 16:52:28 SyntaxError: missing ) after argument list (shell):1

我还发现了这个:

db.Profiles.find().forEach(
  function(e) {
    e.emails = e.emails.toLowerCase();
    db.Profiles.save(e);
  }
)

错误:

1 月 29 日星期二 16:51:41 类型错误:e.emails.toLowerCase 不是函数(shell):3

提前感谢您的帮助。

4

3 回答 3

5

您需要将 emails 数组中的每个字符串都小写。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);  
});
于 2013-01-29T17:03:34.067 回答
1

我找到了一种更简单快捷的方法

db.Profiles.find({email : { $exists: true}}).forEach(
 function(e) {
   e.email = e.email.toLowerCase();
    db.Profiles.save(e);
 });
于 2014-05-29T23:16:14.793 回答
0
db.collectionname.find({ "Key_name": {$ne:null} }).forEach(function(doc) 
{
    db.collectionname.update(
        { _id: doc._id },
        { "$set": { "Key_name": doc.Key_name.toLowerCase() } }
    );
});
于 2015-03-12T20:27:48.693 回答