我有很多記錄存儲在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