Вопрос по javascript, node.js, regex, mongodb – MongoDB Regular Expression Search - начинается с использования драйвера javascript и NodeJS
Я использую драйвер JavaScript mongodb от nodejs. Я хочу сделать этот запрос в моей функции JavaScript:
db.mycollection.find({Zip:/^94404/});
Клиент Монго получает 8 документов, которые соответствуют этому критерию. Однако мой код JavaScript не получает никаких документов.
DataProvider.prototype.findByZipcode = function(zipCode, callback) { this.getCollection(function(error, collection) { if (error) callback(error); else { var qs = '{Zip:/^'+zipCode+'/}'; collection.find(qs).toArray(function(error, results) { if (error) callback(error); else callback(null, results); }); } }); };
Я тоже пробовал
<pre>
var qs = {Zip: '/^'+zipCode+'/'};
</pre>
Между прочим, я считаю, что точное соответствие работает нормально, но это не то, что я хочу.
то есть.
<pre>
var q = {'Zip' :zipCode};
</pre>
$options => i
для поиска без учета регистра
Начать сstring
db.collection.find({zip:{'$regex' : '^string', '$options' : 'i'}})
Конец сstring
db.collection.find({zip:{'$regex' : 'string$', '$options' : 'i'}})
Содержитstring
db.collection.find({zip:{'$regex' : 'string', '$options' : 'i'}})
Не содержитstring
db.collection.find({zip:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})
Сохраните это как закладку и ссылку для любых других изменений, которые могут вам понадобиться. http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
три строки и ищетеstring '/^94404/'
найти что-нибудь, если у вас есть какие-то странно выглядящие почтовые индексы.
Самый простой способ построить объект регулярного выражения из строки в JavaScript - это использоватьnew RegExp(...)
:
var query = { Zip: new RegExp('^' + zipCode) };
Тогда ты можешь:
collection.find(query).toArray(...)
Подобные вещи работают в оболочке MongoDB, а подобные вещи работают в интерфейсе Ruby, поэтому он должен работать и в интерфейсе JavaScript.