2017-03-04 10 views
1

属性 'filename'の2つのバージョンを保存したい(1つは通常のファイル名、もう1つはfilenameの小文字のバージョンです)。これらの2つの属性を格納する必要があるので、返されたデータに対して大文字と小文字を区別しない並べ替えを行うことができます。ここに私がこれまでに持っているものがあります:既存の属性を使用して各MongoDB文書に新しい属性(列)を追加するにはどうすればよいですか?

db.collection.update({},{ lowerCaseFileName: filename.toLowerCase() }) 

これはエラー "ファイル名が定義されていません"を返しています。しかし、達成するための方法を模索してきましたが、私の問題を解決するのに役立つものは何も見つかりませんでした。私はこれに得ることができるすべての助けに感謝します、ありがとう。

答えて

0

のMongoDB 3.4以降Case Insensitive Indexes機能があります:

db.collection.createIndex({ 
    filename: 1 
}, { 
    collation: { 
     locale: 'en', 
     strength: 2 
    } 
}) 

あなたがlocaleおよび1または2のstrength値を定義する必要があり(collationを参照してください)ケース無感覚

のためにあなたはその後、小文字を区別しないソートを実行することができます:

db.collection.find().collation({ 
    locale: 'en', 
    strength: 2 
}).sort({ 
    filename: -1 
}) 
+0

ありがとうございました! – remank

0
var cursor = db.collection.find({}); 
cursor.forEach(function(e){ 
    e.lowercase = e.fileName.toLowerCase(); 
    db.collection.save(e); 
    }) 

コレクションを反復してフィールドを更新してみてください

関連する問題