2012-09-20 114 views
5

如何在mongo db中編寫查找查詢以選擇特定值。例如MongoDB/PHP ..如何編寫選擇查詢?

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

假設如果MySQL查詢看起來是這樣的,

SELECT name,age from things where id=3; 

我想知道如何寫找到PHP/MongoDB的查詢來選擇特定的值?

+0

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

回答

0

Yogesh建議using the mongo _id但實際上比文檔中的常規字段更復雜。

來實現:

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

使用MongoDB的PHP驅動程序,這樣做:

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

如果你沒有用 「_id」 字段保存文檔,然後蒙戈自動加入這一領域,具有非常高的獨特可能性的BSON值。通常是'512ba941e0b975fe00000000'。

如果您嘗試$collection->find(array('_id' => '512ba941e0b975fe00000000'));,則結果爲空並且不會生成錯誤,這在調試時會非常令人沮喪。很容易忘記使用new MongoID()而不僅僅是字符串_id

+0

不,你也可以用'$收藏 - >找到(陣列( '_ ID'=> '512ba941e0b975fe00000000'));'。並沒有問題。 –

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