2013-03-12 4 views
1

Я делаю проект с mongodb и php. поэтому я пытаюсь найти запись, используя ее _id. здесь я выкладываю значение JSon как таким образомКак использовать mongodb _id, чтобы найти запись

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

тогда я получаю это значение и декодировать его и использовать, чтобы найти, как этот путь

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

но выше кода дают ошибку, потому что в JSON их является ключевым подобный $id. так как я решаю выше проблемы, пожалуйста, помогите мне.

ответ

2

С JSON строки оно немного отличается от всех примеров, приведенных в настоящее время.

Поскольку теперь у вас есть объект массива ДООСА который выглядит как:

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. Это можно сделать, отправив array('_id' => new MongoId($valOf_id)) в запрос на поиск.

Я не написал подробный ответ, как я уверен, что это достаточно для того, чтобы получить правильную точку :-)

Смежные вопросы