我希望在MongoDB中找到名称字段中包含大写字母N的文档。以下两个搜索都返回正确的结果。
db.col.find({name: /N/})
db.col.find({name: /.*N.*/})
到目前为止,我总是使用正则表达式,如第一个find()
语句中所述,相信.*
已被添加,如果我不使用^
或$
。但是,如果存在差异,我绝不会知道。
答案 0 :(得分:1)
第一个比第二个更快 这是Perl中的一个基准:
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw(:all);
my @data = (
'jkhfq lqksjdfh N lmkjqf N kjlh',
'NNNNNNNNNN',
'lkjh vuzyd vuyr gdqhgsjkhdg',
);
my $count = -2;
cmpthese($count, {
'anchor' => sub {
my @match = grep{/^.*N.*$/} @data;;
},
'simple' => sub {
my @match = grep { /N/ } @data;
},
});
<强>结果:强>
Rate anchor simple
anchor 378332/s -- -28%
simple 521907/s 38% --
正则表达式/N/
比/^.*N.*$/
快38%。