O MongoDB não armazene os dados como JSON.
O documento que você colou parece copiar e colar do shell. Este também não é o formato JSON. Este formato é chamado Extended JSON - e é como o shell do MongoDB representa os dados em javascript. A maioria dos exemplos no site do MongoDB também usa esse formato, pois é simples e fácil. Então, em vez de ter dezenas de formatos de saída diferentes (para cada driver de idioma), as documentações oficiais do MongoDB usam o shell para demonstrar a funcionalidade e a saída.
O formato subjacente real é chamado Binary JSON (BSON). Você nunca verá esse formato e nunca interagirá com ele.
Quando você interage com o MongoDB em PHP, tudo que você precisa saber é que você salva um array PHP. Os dados retornados do MongoDB também são uma matriz PHP. O formato do disco subjacente não é relevante.
Você nunca precisa chamar json_encode() ou json_decode().
A
$collection->find($query)
retorna um objeto chamado MongoCursor. Você deve iterar sobre este objeto para obter os resultados, que serão um array PHP. foreach($collection->find($query) as $result) {
var_dump($result);
}
Este exemplo de código irá var_dump() um resultado de cada vez. Este
result
é chamado de "Documento MongoDB" e é semelhante a "linha MySQL". Assim como no MySQL, você não precisa saber qual é o protocolo subjacente ou qual é o formato do disco subjacente - isso não afeta você. Eu sugiro fortemente que você leia o tutorial MongoDB PHP Driver:http://us2. php.net/manual/en/mongo.tutorial.php
Isso deve explicar um pouco melhor o conceito, além de como o driver funciona :)