2017-03-04 117 views
1

我想存儲屬性'filename'的兩個版本(一個是常規文件名,一個是文件名的小寫版本)。我需要存儲這兩個屬性,以便對返回的數據進行不區分大小寫的排序。這是我到目前爲止:如何使用現有屬性爲每個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和不區分大小寫一個strength值的1或2(參見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); 
    }) 

嘗試迭代收集並更新字段

相關問題