sql >> Database >  >> NoSQL >> MongoDB

Aan de slag met PHP en MongoDB

ScaleGrid is een MongoDB-beheeroplossing voor openbare clouds. MongoDB (van 'humongous') is een schaalbare, krachtige, open source NoSQL-database van 10gen.

ScaleGrid helpt u bij het inrichten, configureren van hoge beschikbaarheid en herstel na noodgevallen, uitschrijven, bewaken, upgraden, klonen, back-uppen en herstellen van uw MongoDB-implementaties op AWS, Azure en DigitalOcean. Een van de voordelen van ScaleGrid is dat u volledige SSH-toegang krijgt tot uw instanties. Dit stelt u in staat om uw PHP-server op dezelfde machine te draaien als uw MongoDB-server, een uiterst nuttig voordeel voor ontwikkel- en testscenario's. In deze tutorial laten we je in vijf eenvoudige stappen zien hoe je je PHP-server en MongoDB-server op dezelfde machine kunt instellen.

  1. Maak uw MongoDB-instantie op ScaleGrid

    Volg de instructies om aan de slag te gaan hier om uw machinepool te maken, MongoDB-instanties te maken, SSH-inloggegevens en SSH op te halen in de instantie, of bekijk onze documentatie voor het maken van een MongoDB-cluster.

  2. Maak verbinding met MongoDB en vul uw gegevens in

    SSH in uw MongoDB-instantie. Maak verbinding met uw lokale MongoDB-instantie met behulp van de ingebouwde mongo-client en start enkele vragen:

    
    /usr/bin/mongo
    MongoDB shell version: 2.0.7
    connecting to: test
    >show dbs
    config  (empty)
    local   (empty)
    >db.version()
    2.0.7
    >db.stats()
    {
    "db" : "test",
    "collections" : 0,
    "objects" : 0,
    "avgObjSize" : 0,
    "dataSize" : 0,
    "storageSize" : 0,
    "numExtents" : 0,
    "indexes" : 0,
    "indexSize" : 0,
    "fileSize" : 0,
    "nsSizeMB" : 0,
    "ok" : 1
    }
    

    Laten we een dummy-database maken en wat gegevens in een verzameling invoegen. "Collecties" zijn het equivalent van relationele tabellen. Een verzameling kan veel "documenten" bevatten, wat het equivalent is van rijen in de relationele wereld.

    >use testdb
    switched to db testdb
    >db.testcollection.insert({"name":"blah", "value":"humbug"});
    >db.testcollection.insert({"name":"blah1", "value":"humbug1"});
    >db.find();
    { "_id" : ObjectId("50db292013d7f5d141a9cbfb"), "name" : "blah", "value" : "humbug" }
    { "_id" : ObjectId("50db292913d7f5d141a9cbfc"), "name" : "blah1", "value" : "humbug1" }
    
  3. Uw PHP-server instellen

    Als u al een PHP-server heeft die op een andere machine dan uw MongoDB-server draait, kunt u deze stap overslaan en doorgaan naar stap 4. Als u geen PHP-server heeft , kunt u een PHP-server installeren op de MongoDB-machine. Dit is een van de voordelen van volledige SSH-toegang tot uw MongoDB-machines:

    [root@ip-10-29-173-18 ~]#yum install httpd php
    [root@ip-10-29-173-18 ~]#chkconfig httpd on
    [root@ip-10-29-173-18 ~]#service httpd start
    
  4. Installeer de Mongo PHP-extensie

    MongoDB-ondersteuning in PHP is via de Mongo PHP-extensie. U kunt het  installeren met het PECL-installatieprogramma:

    [root@ip-10-29-173-18 ~]#yum install php-pear
    [root@ip-10-29-173-18 ~]#yum install php-devel
    [root@ip-10-29-173-18 ~]#yum install make
    [root@ip-10-29-173-18 ~]#pecl install mongo
    [root@ip-10-29-173-18 ~]#echo "extension=mongo.so" >> /etc/php.ini
    [root@ip-10-29-173-18 ~]#/etc/init.d/httpd restart
    
  5. Voer PHP-code uit

    Haal de MongoDB-verbindingsreeks op uit de ScaleGrid-console op het detailtabblad onder aan het scherm. Als je je PHP-code op dezelfde box gebruikt, kun je 127.0.0.1 gebruiken.

    Laten we wat PHP-code schrijven om de documenten in de collectie die we zojuist hebben gemaakt te doorzoeken. Maak een bestand met de naam test.php en plaats de onderstaande code in het bestand. Voer de code uit met "php test.php".

    <?php
    try {
      // open connection to MongoDB server
      $conn = new Mongo('<connection string>');
    
      // access database
      $db = $conn->testdb;
    
      // access collection
      $collection = $db->testcollection;
    
      // execute query
      // retrieve all documents
      $cursor = $collection->find();
    
      // iterate through the result set
      // print each document
      echo $cursor->count() . ' document(s) found.
    ';
      foreach ($cursor as $obj) {
        echo 'Name: ' . $obj['name'] . '
    ';
        echo 'Value: ' . $obj['value'] . '
    ';
        echo '
    ';
      }
    
      // disconnect from server
      $conn->close();
    } catch (MongoConnectionException $e) {
      die('Error connecting to MongoDB server');
    } catch (MongoException $e) {
      die('Error: ' . $e->getMessage());
    }
    
    ?>
    

Raadpleeg voor meer gedetailleerde instructies en voorbeelden de 10gen-documentatie over het gebruik van PHP met Mongo.


  1. Redis SortedSet:hoe krijg ik waarden in numerieke volgorde in plaats van alfabetische volgorde als twee waarden dezelfde score hebben?

  2. Sla meerdere versies van gegevens op in de Redis-cache

  3. MongoDb met FastAPI

  4. Werken met twee afzonderlijke redis-instanties met sidekiq?