我有很多记录存储在 MongoDB 中,它们(大部分)是用标题大小写的。样品原型:
{
'name':'Awesome Pair of Jeans',
'designer':'Company123',
'description':'This pair of jeans is really great. Navy colour.'
},{
'name':'awesome jeans part 2',
'designer':'company123',
'description':'This pair of jeans is also navy in colour.'
}
在我的前端(基于 Angular/Node 构建)中,我想让用户能够搜索记录,但由于 MongoDB 的搜索区分大小写,我遇到了一些问题。
目前,如果有人在“名称”字段中搜索单词“awesome”(小写),我能够确保两者都返回的唯一方法awesome
是Awesome
查询如下:
首先,查询被包装在一个正则表达式中。因此,如果用户搜索“awesome”,它将作为name:/awesome/i
exports.postsQuery = function(req,res){
var query = req.params.query; // 'name:/awesome/i'
var properties = query.split('+');
var criteria = {};
properties.forEach(function(property) {
var propParts = property.split('=');
criteria[propParts[0]] = eval(propParts[1]); // criteria{name:/awesome/i};
});
db.products.find(criteria, function (err, record) {
// Do stuff
});
}
这会返回正确的结果,但我想知道它有多安全,以及是否有更好的方法来做到这一点。
类似于这个问题:Mongo 中不区分大小写的搜索,但我想知道速度和安全性的最佳做法是什么。