当前位置: 首页 > 知识库问答 >
问题:

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

轩辕佑运
2023-03-14
db.mycollection.find({Zip:/^94404/}); 

    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>

顺便说一句,我发现完全匹配很好,但这不是我想要的。

IE.

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

共有1个答案

戚星腾
2023-03-14

你差点就拿到了。您总是在字符串中找到一个regex,然后查找字符串'/^94404/',除非您有一些奇怪的邮政编码。

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

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

那么你可以:

collection.find(query).toArray(...)
 类似资料:
  • 问题内容: 我正在使用来自nodejs的JavaScript mongodb驱动程序。我想在我的JavaScript函数中执行以下查询: mongo客户端检索符合此条件的8个文档。但是,我的JavaScript代码未获取任何文档。 我也试过 顺便说一句,我发现完全匹配可以正常工作,但这不是我想要的。 即。 问题答案: 您几乎拥有它。除非在 字符串中 有一些奇怪的邮政编码,否则您始终在字符串内以正则

  • 问题内容: 我需要在给定正则表达式的字符串中找到所有匹配项。我一直在这样做,直到遇到一个案例,它没有达到我的预期。例如: 在这种情况下,返回我需要的内容(最长的匹配项),但是行为却有所不同,尽管文档暗示它应该是相同的: 匹配所有出现的模式,而不仅仅是第一个。 为什么行为不同? 如何获得with (或其他方式)的结果? 问题答案: 好的,我从文档中查看发生了什么…… 如果该模式中存在一个或多个组,则

  • 问题内容: 我需要找到与特定正则表达式匹配的所有软件包: 基本上,包的名字应该与启动,并有后话。例如,以下软件包应匹配: 我可以做,但是有很多我不感兴趣的软件包。 是否提供通过正则表达式查找软件包的方法?或者,我应该只是通过管道传递结果来过滤掉无关的包? 此外,可能是一个的“交集” ,并有助于太。 问题答案: alecxe,我相信这是您要寻找的一线客。 如下面评论中铬酸盐所建议的那样,您可以根据需

  • 问题内容: 我想对MongoDB驱动程序作出承诺。我写了以下代码: 您是否知道为什么在调用该方法时为什么没有输出: 问题答案: 手动散布API是很危险的,我建议采取以下措施: 有了Bluebird的承诺,它看起来就像:

  • 主要内容:使用正则表达式,在不区分大小写的情况下使用正则表达式,对数组元素使用正则表达式,优化正则表达式查询在编程语言中,正则表达式可以使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。MongoDB 可以使用 $regex 操作符来设置匹配字符串的正则表达式,MongoDB 使用 PCRE(Perl 兼容的正则表达式)作为正则表达式语言。 与文本搜索不同,您不需要执行任何配置或命令就可以直接使用正则表达式。假设我们已经在名为 posts 的集合中插入了一个文档,如下所示: 使用正则表达