我尝试在MongoDB数据库上使用perl执行此查询:
$db->$collection->find({"_id" : { "$in" : ["4f520122ecf6171327000137", "4f4f49c09d1bd90728000034"]}});
但它什么也没有返回,它必须返回两个文件。这个查询出了什么问题?
谢谢。
编辑:它也不起作用:
$db->$collection->find( {_id => "4f520122ecf6171327000137"} );
答案 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( ... )