带有_id in perl的mongoDB运算符中的$

时间:2013-01-31 00:58:40

标签: perl mongodb

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

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

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

谢谢。

编辑:它也不起作用:

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

1 个答案:

答案 0 :(得分: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( ... )