Perl mongodb检查是否存在

Perl mongodb检查是否存在,perl,mongodb,find,exists,Perl,Mongodb,Find,Exists,perl中检查mongodb中的文档是否存在的最快方法是什么 还有比这更快的方法吗 my $cursor = $cache->find( { "key" => $key->key } ); if ( $cursor->count ) { return 1; } 使用count方法可以。要保存一些代码,您可以使用find_one: return 1 if $cache->find_one( { "key" => $key->key } ); 这两种方

perl中检查mongodb中的文档是否存在的最快方法是什么

还有比这更快的方法吗

my $cursor = $cache->find( { "key" => $key->key } );

if ( $cursor->count ) {
return 1;
}

使用
count
方法可以。要保存一些代码,您可以使用
find_one

return 1 if $cache->find_one( { "key" => $key->key } );
这两种方法的网络开销大致相同,至少需要两次往返才能发送查询并从游标检索结果

如果改用命令,可能会节省一些处理时间。(不过,在引擎盖下,它只是在
$cmd
集合中查找一个。)


但我怀疑这种网络开销水平会有很大的不同。我鼓励您在现实条件下对其进行基准测试,看看什么最有效。

我认为您的意思是“如果mongodb中的文档存在”。此查询不会检查是否存在字段为
key
的文档,而是检查是否存在字段为
key
等于
$key->key
的文档。是的,这是真的。我想检查字段key是否等于$key->key。我相应地更正了您的问题。请注意,您应该能够自己编辑您的问题。
my $results = $cache->aggregate( [ { '$match' => { key => $cache->key } }, { '$limit' => 1 } ] );
return 1 if @$results;