0

我尝试在 MongoDB 数据库上使用 perl 执行此查询:

$db->$collection->find({"_id" : { "$in" : ["4f520122ecf6171327000137", "4f4f49c09d1bd90728000034"]}});

但它什么也不返回,它必须返回两个文件。这个查询有什么问题?

谢谢你。

编辑:它也不起作用:

$db->$collection->find( {_id => "4f520122ecf6171327000137"} );
4

1 回答 1

16

首先,确保您使用正确的语法。您的第一个示例不是有效的 Perl 代码,因为您包含了一块 JSON 作为查询参数。

其次,假设这些 ID 值是 MongoDB ObjectID,您需要创建 OID 对象以便将它们与普通字符串区分开来。并确保在''周围使用单引号 ( ) $in,否则 Perl 将尝试$in作为变量进行插值(其中可能没有任何内容)。

所以我假设你想做这样的事情:

$db->$collection->find( {
    "_id" => { 
        '$in' => [ MongoDB::OID->new( value => "4f520122ecf6171327000137" ), 
                   MongoDB::OID->new( value => "4f4f49c09d1bd90728000034" )
                 ]
             } 
} );

编辑:此外,使用自动加载的方法名称来检索集合已被弃用一段时间。你最好使用$db->get_collection( "collection name" )->find( ... )

于 2013-01-31T01:10:37.723 回答