我有很多记录存储在MongoDB中,它们(大部分)都是用标题大写的。样品原型:搜索MongoDB时不区分大小写 - 是eval()好吗?
{
'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.'
}
在我的前端(建立在角/节点),我想给用户搜索记录的能力,但MongoDB的搜索是区分大小写的,我有一些问题。
目前,如果有人搜索在“名称”框中输入单词“真棒”(小写),只有这样,我已经能够保证双方返回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
});
}
这将返回正确的结果,但我不知道它是多么的安全,以及是否有更好的方法来做到这一点。
与此问题类似:Case insensitive search in Mongo但我想知道什么是速度和安全性的最佳实践。
好主意,欢呼! – Jascination