Найти документ с ObjectID в mongoDB

Когда я вставлял некоторые документы в коллекцию (без ObjectID), mongoDB добавляет свои собственные ObjectID.

Я хочу запросить документ по его уникальному ObjectID.

$db->collection_name->find(array('_id'=>'4e49fd8269fd873c0a000000'))); 

Он не работает ни с префиксом MongoID, ни с ObjectID перед «4e49fd8269fd873c0a000000».

Каков правильный способ запроса ObjectID с помощью mongoDB в PHP?

Related of "Найти документ с ObjectID в mongoDB"

MongoId , что вам нужно использовать объект MongoId , например

 $item = $collection->findOne(array( '_id' => new MongoId('4e49fd8269fd873c0a000000'))); 

Заметки на странице Querying немного тупые, но он упоминает …

Если пользователь не указал иное, поле _id является MongoId. Наиболее распространенная ошибка заключается в том, чтобы использовать строку для соответствия MongoId. Имейте в виду, что это два разных типа данных и не будут соответствовать друг другу таким же образом, что строка «array ()» не совпадает с пустым массивом

Я думаю, теперь API изменится на MongoDB\BSON\ObjectID , также вы можете использовать [] для обозначения массива в PHP 5.4+, поэтому он должен быть:

 $item = $collection->findOne(['_id' => new MongoDB\BSON\ObjectID( idToken )]); 

основанный на ответе Фила.