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

标签 javascript regex node.js mongodb

我正在使用来自 nodejs 的 JavaScript mongodb 驱动程序。我想在我的 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);
                });
            }
        });
    };

I also tried

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

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

即。

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

最佳答案

你几乎拥有它。你不断地在字符串中找到一个正则表达式并寻找 string '/^94404/' 会找到任何东西,除非你有一些看起来很奇怪的邮政编码。

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

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

那么你可以:

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

这种东西在 MongoDB shell 中工作,类似的东西在 Ruby 界面中工作,所以它也应该在 JavaScript 界面中工作。

关于javascript - MongoDB 正则表达式搜索 - 从使用 javascript 驱动程序和 NodeJS 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073863/

相关文章:

javascript - 如何让 float 图表在 Rails 中工作?

在页面显示之前加载 Javascript 警报

regex - 在Apache和Nginx上将URL重写为查询字符串

java正则表达式匹配一个字符串

node.js - Node 转换流 : append string to end

javascript - 如何使 select2 搜索按字母顺序开始?

javascript - 如何使用 fetch api 获取 XML

sql - 在 Oracle 中使用 Regexp_substr 选择字符串,直到\n字符长度内最后一次出现空格

javascript - MeteorJS 获取图像宽度

node.js - NodeJS 中的 Promise