当前位置: 首页 > 面试题库 >

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

越骏俊
2023-03-14
问题内容

我正在使用来自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>

问题答案:

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

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

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

那么你就可以:

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

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



 类似资料:
  • 我也试过 顺便说一句,我发现完全匹配很好,但这不是我想要的。 IE.

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

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

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

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