sql >> Database teknologi >  >> NoSQL >> MongoDB

Afkodning af JSON ved hjælp af PHP fra Mongo

MongoDB gør ikke gemme dataene som JSON.

Det dokument, du indsatte, ser ud til at være copy&paste fra shellen. Dette er heller ikke JSON-format. Dette format kaldes Extended JSON - og er sådan som MongoDB-skallen repræsenterer dataene i javascript. De fleste eksempler på MongoDB-hjemmesiden bruger også dette format, da det er enkelt og nemt. Så i stedet for at have snesevis af forskellige outputformater (for hver sprogdriver), bruger MongoDB's officielle dokumentation skallen til at demonstrere funktionalitet og output.

Selve underliggende format kaldes Binary JSON (BSON). Du vil aldrig se dette format, og du vil aldrig interagere med det.

Når du interagerer med MongoDB i PHP, skal du blot vide, at du gemmer et PHP-array. De data, der returneres fra MongoDB, er også et PHP-array. Det underliggende diskformat er ikke relevant.

Du behøver aldrig at kalde json_encode() eller json_decode().

$collection->find($query) metode returnerer et objekt kaldet MongoCursor. Du bør gentage dette objekt for at få resultaterne, som vil være et PHP-array.

foreach($collection->find($query) as $result) {
    var_dump($result);
}

Dette kodeeksempel vil var_dump() et resultat ad gangen. Dette result kaldes et "MongoDB Document" og ligner "MySQL row". Ligesom med MySQL behøver du ikke at vide, hvad den underliggende protokol er, eller hvad det underliggende diskformat er - det har ingen indflydelse på dig.

Jeg foreslår kraftigt, at du læser MongoDB PHP Driver tutorial:http://us2. php.net/manual/en/mongo.tutorial.php

Dette burde forklare konceptet en smule bedre, sammen med hvordan driveren fungerer :)




  1. Hvordan konfigureres MongoDB Java-driver MongoOptions til produktionsbrug?

  2. Hvordan får jeg adgang til indlejrede json-objekter i en Pandas DataFrame?

  3. mongoDB vælger post baseret på to betingelser

  4. Hvordan bruger man $set og dot notation til at opdatere indlejrede array-elementer ved hjælp af tilsvarende gamle element?