2012-09-20 20 views
5

Jak napisać zapytanie wyszukiwania w Mongo db, aby wybrać określone wartości. Na przykładMongoDB/PHP .. Jak pisać wybrane zapytania?

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

przypuszczać jeśli MySQL Query wygląda tak,

SELECT name,age from things where id=3; 

zastanawiam się jak napisać znaleźć kwerendy w PHP/MongoDB, aby wybrać konkretne wartości?

+0

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

Odpowiedz

0

Yogesh zasugerował using the mongo _id, ale to jest bardziej skomplikowane niż zwykłe pole w dokumencie.

osiągnąć:

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

użyciu sterownika MongoDB w PHP, to zrobić:

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

Jeśli nie zapisać dokument z "_id" pole, a następnie Mongo dodaje to pole automatycznie , z wartością BSON, która ma bardzo wysokie prawdopodobieństwo bycia unikalnym. Zwykle jest to coś w rodzaju "512ba941e0b975fe00000000".

Jeśli spróbujesz uzyskać $collection->find(array('_id' => '512ba941e0b975fe00000000'));, wyniki są puste i nie generuje się błędu, co może być bardzo frustrujące podczas debugowania. Łatwo zapomnieć o użyciu new MongoID(), a nie po prostu ciągiem _id.

+0

Nie można też użyć '$ Collection-> find (array ('_ id' => '512ba941e0b975fe00000000'));'. i nie ma problemu. –

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);