Подтвердить что ты не робот

Поиск регулярного выражения MongoDB - начинается с использования драйвера javascript и NodeJS

Я использую драйвер JavaScript mongodb от nodejs. Я хочу сделать этот запрос в моей функции JavaScript:

db.mycollection.find({Zip:/^94404/}); 

Клиент mongo извлекает 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>

Btw, я считаю, что точное соответствие работает нормально, но это не то, что я хочу.

т.

<pre>
var q = {'Zip' :zipCode};
</pre>
4b9b3361

Ответ 1

У тебя это почти есть. Вы продолжаете заканчивать регулярным выражением внутри строки и ищете строку '/^94404/', чтобы найти что-либо, если у вас нет странных выглядящих почтовых индексов.

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

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

Затем вы можете:

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

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

Ответ 2

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