Tenho certeza que você tem que usar um
MongoId
objeto, por exemplo $item = $collection->findOne(array(
'_id' => new MongoId('4e49fd8269fd873c0a000000')));
As notas na página de consulta são um pouco obtusas, mas mencionam...
A menos que o usuário tenha especificado de outra forma, o campo _id é um MongoId. O erro mais comum é tentar usar uma string para corresponder a um MongoId. Tenha em mente que estes são dois tipos de dados diferentes e não corresponderão entre si da mesma forma que a string "array()" não é o mesmo que um array vazio