2011-01-11 9 views
8

Devo trovare una sorta di "_id" nel mio Mongo, posso farlo usando la shell di Mongo, e io non può farlo usando l'API Perl.come usare "trova" per cercare "_id => OBjectID (" id ")" in Perl API

Sto cercando di farlo (mongo shell):

./mongo 
use my_db 
db.my_collection.find({_id : ObjectId("4d2a0fae9e0a3b4b32f70000")}) 

funziona (rendimenti), ma non posso farlo utilizzando Perl API,

$mongo->my_db->my_collection(find({_id => "ObjectId(4d2a0fae9e0a3b4b32f70000"})); 

non lo fa! lavorare perché "ObjectId" non è una stringa, ma se lo fai,

./mongo 
use my_db 
db.my_collection.find({_id : "ObjectId(4d2a0fae9e0a3b4b32f70000)"}) 

non funziona troppo, sto immagino Perl API stanno facendo^

Ora, devo sapere come lo faccio:

db.my_collection.find({_id : ObjectId("4d2a0fae9e0a3b4b32f70000")}) 

utilizzando Perl API.

risposta

8

L'implementazione sembra cambiato.

$mongo->my_db->my_collection(
    find({ _id => MongoDB::OID->new(value => "4d2a0fae9e0a3b4b32f70000")}) 
); 
1

ho trovato la soluzione, si deve fare:

$mongo->my_db->my_collection(find({ _id => $mongo->oid("4d2a0fae9e0a3b4b32f70000")})); 
-2

Nel leggere il MongoDB :: Tutorial

uso MongoDB carichi maggior parte dei pacchetti che sarà necessario interagire con MongoDB MongoDB: :: Connessione, MongoDB :: Database, MongoDB :: Collection e MongoDB :: Cursore. Per usare speciali tipi di dati Mongo (vedere MongoDB :: DataTypes), devi includerli separatamente. Così, di solito, per usare Mongo, potrai iniziare con almeno:

use MongoDB; 
use MongoDB::OID; 

allora si può solo fare questo nel codice:

$db->$collection->find_one({ _id => $id }) 
Problemi correlati