2

Profiles というコレクションがあり、これには email という配列が含まれています。

配列内のすべての電子メール文字列を小文字に変更したいと考えています。

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);
  }
)

エラー:

Tue Jan 29 16:51:41 TypeError: e.emails.toLowerCase は関数ではありません (シェル):3

助けてくれてありがとう。

4

3 に答える 3

5

email 配列内のすべての文字列を小文字にする必要があります。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 に答える
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 に答える