MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

$ no operador mongoDB com _id em perl


Primeiro, verifique se você está usando a sintaxe correta. Seu primeiro exemplo não é um código Perl válido, pois você está incluindo um pedaço de JSON como o parâmetro de consulta.

Segundo, supondo que esses valores de ID sejam os ObjectIDs do MongoDB, você precisará criar objetos OID para diferenciá-los das strings comuns. E certifique-se de usar aspas simples ('' ) em torno de $in , caso contrário, o Perl tentará interpolar $in como uma variável (que presumivelmente não tem nada nela).

Então, suponho que você queira fazer algo assim:
$db->$collection->find( {
    "_id" => { 
        '$in' => [ MongoDB::OID->new( value => "4f520122ecf6171327000137" ), 
                   MongoDB::OID->new( value => "4f4f49c09d1bd90728000034" )
                 ]
             } 
} );

Editar:Além disso, o uso de nomes de métodos carregados automaticamente para recuperar coleções foi preterido por um tempo. É melhor usar $db->get_collection( "collection name" )->find( ... )