2013-03-12 126 views
1

我正在用mongodb和php進行項目。所以我試圖找到使用它_id的記錄。我在這裏張貼的JSON值像這樣如何使用mongodb _id查找記錄

{"_id": {"$id": "513ea9d4a00b2ade09000001"}} 

然後我得到這個值,並對其進行解碼,並用它來找到像這樣

$obj = json_decode($json, true); 
$result = $collection->find($obj); 

但上面的代碼給錯誤,因爲在JSON他們是關鍵像$id。所以我如何解決上面的問題請幫助我。

回答

2

點直接從JSON字符串它是目前所有列出的例子略有不同我沒有寫一個詳細的答案。

既然你現在有一個assoc命令陣列,它看起來像一個對象:

array(
    '_id' => array(
     '$id' => "513ea9d4a00b2ade09000001" 
    ) 
) 

您必須提取$id屬性,並將其轉換爲MongoId像這樣:

$db->collection->find(new MongoId($obj['$id'])); 

這將找到你的記錄。

4

請按照下面的例子:

// This is only a string, this is NOT a MongoId 
$mongoid = '4cb4ab6d7addf98506010000'; 

// You will not find anything by searching by string alone 
$nothing = $collection->find(array('_id' => $mongoid)); 
echo $nothing->count(); // This should echo 0 

// THIS is how you find something by MongoId 
$realmongoid = new MongoId($mongoid); 

// Pass the actual instance of the MongoId object to the query 
$something = $collection->find(array('_id' => $realmongoid)); 
echo $something->count(); // This should echo 1 

你可以找到更多信息here

1

要使用'_id'查找文檔,您必須將其轉換爲MongoId對象。這可以通過在find查詢中傳遞array('_id' => new MongoId($valOf_id))來完成。

,因爲我相信這是足以讓你得到:-)