Вопрос по javascript, node.js, regex, mongodb – MongoDB Regular Expression Search - начинается с использования драйвера javascript и NodeJS

13

Я использую драйвер 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>

Ваш Ответ

2   ответа
10

$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/

29

три строки и ищетеstring '/^94404/' найти что-нибудь, если у вас есть какие-то странно выглядящие почтовые индексы.

Самый простой способ построить объект регулярного выражения из строки в JavaScript - это использоватьnew RegExp(...):

var query = { Zip: new RegExp('^' + zipCode) };

Тогда ты можешь:

collection.find(query).toArray(...)

Подобные вещи работают в оболочке MongoDB, а подобные вещи работают в интерфейсе Ruby, поэтому он должен работать и в интерфейсе JavaScript.

Похожие вопросы