2012-09-20 45 views
5

Cómo escribir una consulta en mongo db para seleccionar ciertos valores. Por ejemploMongoDB/PHP .. ¿Cómo escribir consultas de selección?

IN MYSQL - SELECT * from things where id=3; 
IN Mongo - thingscollection->find(array("_id" => $id)) 

Supongamos que si la consulta MySQL se parece a esto,

SELECT name,age from things where id=3; 

Me pregunto cómo escribir encontrar consulta en PHP/MongoDB para seleccionar valores específicos?

+0

http://coderwall.com/p/aymsvw –

Respuesta

0

Yogesh sugirió using the mongo _id pero eso en realidad es más complicado que un campo normal en el documento.

Para lograr:

IN MYSQL - SELECT * from things where id=3; 

utilizando el controlador de PHP de MongoDB, hacer esto:

$m = new MongoClient(); 
$db = $m->selectDB('stuff'); 
$collection = new MongoCollection($db, 'things'); 
$collection->find(array('_id', new MongoID('3')); 

Si no guarda el documento con un campo "_id", a continuación, Mongo añade este campo de forma automática , con un valor BSON que tiene una probabilidad muy alta de ser único. Por lo general, es algo así como '512ba941e0b975fe00000000'.

Si intenta $collection->find(array('_id' => '512ba941e0b975fe00000000')); los resultados están vacíos y no se genera ningún error, lo que puede ser extremadamente frustrante durante la depuración. Es fácil olvidarse de usar new MongoID() y no simplemente la cadena _id.

+0

No, también se puede usar '$ colección-> find (array ('_ id' => '512ba941e0b975fe00000000'));'. y no hay problema –

0
$mongo_url = 'mongodb://127.0.0.1/'; 
$client = new \MongoDB\Client($mongo_url); 
$db_name = 'your_db_name'; 
$db = $client->$db_name; 
$collection = $db->your_collection_name; 

$where = array(
    'user_id' => 3 
); 
$select_fields = array(
    'name' => 1, 
    'age' => 1, 
); 
$options = array(
    'projection' => $select_fields 
); 
$cursor = $collection->find($where, $options); //This is the main line 
$docs = $cursor->toArray(); 

print_r($docs); 
Cuestiones relacionadas