【问题标题】:MongoDB toLowerCase()MongoDB toLowerCase()
【发布时间】:2013-01-29 16:55:00
【问题描述】:

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

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

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

错误:

Tue Jan 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 TypeError: e.emails.toLowerCase is not a function (shell):3

提前感谢您的帮助。

【问题讨论】:

    标签: mongodb mongo-shell


    【解决方案1】:

    您需要将 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);  
    });
    

    【讨论】:

    • @JohnAllen 这个例子是一个数组
    【解决方案2】:

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

    db.Profiles.find({email : { $exists: true}}).forEach(
     function(e) {
       e.email = e.email.toLowerCase();
        db.Profiles.save(e);
     });
    

    【讨论】:

      【解决方案3】:
      db.collectionname.find({ "Key_name": {$ne:null} }).forEach(function(doc) 
      {
          db.collectionname.update(
              { _id: doc._id },
              { "$set": { "Key_name": doc.Key_name.toLowerCase() } }
          );
      });
      

      【讨论】:

      • 能否请您 edit 解释为什么这段代码回答了这个问题?纯代码答案是 discouraged,因为它们不教授解决方案。
      猜你喜欢
      • 2018-03-27
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多