如何使用现有属性为每个MongoDB文档添加新属性(列)?

问题描述:

我想存储属性'filename'的两个版本(一个是常规文件名,一个是文件名的小写版本)。我需要存储这两个属性,以便对返回的数据进行不区分大小写的排序。这是我到目前为止:如何使用现有属性为每个MongoDB文档添加新属性(列)?

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

这是返回错误“文件名未定义”。我一直在寻找办法来完成,但是,没有找到任何有助于解决我的问题的东西。我很感激我能得到的任何帮助,谢谢。

有因为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

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

尝试迭代收集并更新字段