PHP
mongo-php
Zoeken…
Syntaxis
- vind()
Alles tussen MongoDB en Php
Voorwaarden
MongoDB-server meestal op poort 27017. (typ
mongod
op opdrachtprompt om mongodb-server uit te voeren)Php geïnstalleerd als cgi of fpm met geïnstalleerde MongoDB-extensie (MongoDB-extensie wordt niet gebundeld met standaard php)
Componistenbibliotheek (mongodb / mongodb). (In het project uitvoeren
php composer.phar require "mongodb/mongodb=^1.0.0"
om de MongoDB-bibliotheek te installeren)
Als alles in orde is, ben je klaar om verder te gaan.
Controleer op php-installatie
als u niet zeker bent, controleer dan de installatie van Php door php -v
vanaf de opdrachtprompt, zal zoiets als dit teruggeven
PHP 7.0.6 (cli) (built: Apr 28 2016 14:12:14) ( ZTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
Controleer op MongoDB-installatie
Controleer de installatie van MongoDB door mongo --version
MongoDB shell version: 3.2.6
retourneert de MongoDB shell version: 3.2.6
Controle voor Composer-installatie
Controleer op Composer-installatie door php composer.phar --version
Composer version 1.2-dev (3d09c17b489cd29a0c0b3b11e731987e7097797d) 2016-08-30 16:12:39
retourneert Composer version 1.2-dev (3d09c17b489cd29a0c0b3b11e731987e7097797d) 2016-08-30 16:12:39
'
Verbinden met MongoDB vanaf php
<?php
//This path should point to Composer's autoloader from where your MongoDB library will be loaded
require 'vendor/autoload.php';
// when using custom username password
try {
$mongo = new MongoDB\Client('mongodb://username:password@localhost:27017');
print_r($mongo->listDatabases());
} catch (Exception $e) {
echo $e->getMessage();
}
// when using default settings
try {
$mongo = new MongoDB\Client('mongodb://localhost:27017');
print_r($mongo->listDatabases());
} catch (Exception $e) {
echo $e->getMessage();
}
De bovenstaande code maakt verbinding met behulp van MongoDB componistenbibliotheek ( mongodb/mongodb
) opgenomen als vendor/autoload.php
om verbinding te maken met de MongoDB-server die op port
: 27017
. Als alles in orde is, wordt er verbinding gemaakt en wordt een array weergegeven. Als er zich een uitzondering voordoet bij verbinding met de MongoDB-server, wordt het bericht afgedrukt.
CREATE (invoegen) in MongoDB
<?php
//MongoDB uses collection rather than Tables as in case on SQL.
//Use $mongo instance to select the database and collection
//NOTE: if database(here demo) and collection(here beers) are not found in MongoDB both will be created automatically by MongoDB.
$collection = $mongo->demo->beers;
//Using $collection we can insert one document into MongoDB
//document is similar to row in SQL.
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
//Every inserted document will have a unique id.
echo "Inserted with Object ID '{$result->getInsertedId()}'";
?>
In het voorbeeld gebruiken we de $ mongo-instantie die eerder werd gebruikt in het gedeelte Connecting to MongoDB from php
. MongoDB maakt gebruik van het JSON-type gegevensformaat, dus in php zullen we array gebruiken om gegevens in MongoDB in te voegen, deze conversie van array naar Json en vice versa gebeurt door mongo library. Elk document in MongoDB heeft een unieke id genaamd _id, tijdens het invoegen kunnen we dit krijgen met $result->getInsertedId()
;
LEES (Zoeken) in MongoDB
<?php
//use find() method to query for records, where parameter will be array containing key value pair we need to find.
$result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
// all the data(result) returned as array
// use for each to filter the required keys
foreach ($result as $entry) {
echo $entry['_id'], ': ', $entry['name'], "\n";
}
?>
Drop in MongoDB
<?php
$result = $collection->drop( [ 'name' => 'Hinterland'] );
//return 1 if the drop was sucessfull and 0 for failure
print_r($result->ok);
?>
Er zijn veel methoden die kunnen worden uitgevoerd bij $collection
zie officiële documentatie van MongoDB