我想存储两个版本的属性'filename'(一个是常规文件名,一个是文件名的小写版本)。我需要存储这两个属性,以便我可以对返回的数据进行不区分大小写的排序。以下是我到目前为止的情况:
db.collection.update({},{ lowerCaseFileName: filename.toLowerCase() })
这将返回错误“文件名未定义”。我一直在寻找完成的方法,但是,没有找到任何有助于解决我的问题。我感谢任何帮助,谢谢。
答案 0 :(得分: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
})
答案 1 :(得分:0)
var cursor = db.collection.find({});
cursor.forEach(function(e){
e.lowercase = e.fileName.toLowerCase();
db.collection.save(e);
})
尝试迭代集合并更新字段