一尘不染

MongoDB正则表达式搜索-从使用javascript驱动程序和NodeJS开始

node.js

我正在使用来自nodejs的JavaScript mongodb驱动程序。我想在我的JavaScript函数中执行以下查询:

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

mongo客户端检索符合此条件的8个文档。但是,我的JavaScript代码未获取任何文档。

    DataProvider.prototype.findByZipcode = function(zipCode,callback){
        this.getCollection(function(error,collection){
            如果(错误)
                回调(错误);
            其他{
                var qs ='{Zip:/ ^'+ zipCode +'/}';
                collection.find(qs).toArray(function(error,results){
                    如果(错误)
                        回调(错误);
                    其他
                        callback(null,results);
                });
            }
        });
    };

我也试过

<pre>
var qs = {Zip: '/^'+zipCode+'/'};
</pre>

顺便说一句,我发现完全匹配可以正常工作,但这不是我想要的。

即。

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

阅读 219

收藏
2020-07-07

共1个答案

一尘不染

您几乎拥有它。除非在 字符串中 '/^94404/'有一些奇怪的邮政编码,否则您始终在字符串内以正则表达式结尾,并寻找该 字符串
以查找任何内容。

从JavaScript中的字符串构建正则表达式对象的最简单方法是使用new RegExp(...)

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

那么你就可以:

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

这种事情在MongoDB shell中起作用,而类似的事情在Ruby接口中起作用,因此它也应该在JavaScript接口中起作用。

2020-07-07