PHP
mongo-php
Ricerca…
Sintassi
- trova()
Tutto tra MongoDB e Php
Requisiti
Il server MongoDB in esecuzione sulla porta solitamente 27017. (digitare
mongod
al prompt dei comandi per eseguire il server mongodb)Php installato come cgi o fpm con estensione MongoDB installata (l'estensione MongoDB non è in bundle con php predefinito)
Libreria del compositore (mongodb / mongodb). (Nel root del progetto
php composer.phar require "mongodb/mongodb=^1.0.0"
per installare la libreria MongoDB)
Se tutto è a posto, sei pronto per andare avanti.
Verifica l'installazione di Php
se non si è sicuri controllare l'installazione di Php eseguendo php -v
al prompt dei comandi si otterrà qualcosa di simile
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
Verifica l'installazione di MongoDB
Controllare l'installazione di MongoDB eseguendo mongo --version
restituirà la MongoDB shell version: 3.2.6
Verifica l'installazione di Composer
Verifica l'installazione di Composer eseguendo php composer.phar --version
restituirà la Composer version 1.2-dev (3d09c17b489cd29a0c0b3b11e731987e7097797d) 2016-08-30 16:12:39
`
Connessione a MongoDB da 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();
}
Il codice sopra si connetterà usando la libreria di compositori MongoDB ( mongodb/mongodb
) inclusa come vendor/autoload.php
per connettersi al server MongoDB in esecuzione sulla port
: 27017
. Se tutto è a posto, si connetterà e lista una matrice, se si verifica un'eccezione collegandosi al server MongoDB il messaggio verrà stampato.
CREA (Inserimento) 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()}'";
?>
Nell'esempio stiamo usando l'istanza $ mongo precedentemente utilizzata nella Connecting to MongoDB from php
parte Connecting to MongoDB from php
. MongoDB usa il formato di dati di tipo JSON, quindi in php useremo l'array per inserire dati in MongoDB, questa conversione da array a Json e viceversa sarà effettuata dalla libreria mongo. Ogni documento in MongoDB ha un ID univoco chiamato _id, durante l'inserimento possiamo ottenere ciò usando $result->getInsertedId()
;
LEGGI (Trova) 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";
}
?>
Abbandona in MongoDB
<?php
$result = $collection->drop( [ 'name' => 'Hinterland'] );
//return 1 if the drop was sucessfull and 0 for failure
print_r($result->ok);
?>
Ci sono molti metodi che possono essere eseguiti su $collection
vedi la documentazione ufficiale di MongoDB