Installer l’extension PHP de Mongodb et son utilisation

Pour utiliser une base MongoDB avec PHP, il faut installer l’extension Mongo (http://www.php.net/manual/en/mongo.installation.php). Comme c’est assez simple, ayant déjà tous les outils pour compiler une extension PHP, j’ai du coup préféré la voie de la compilation:

On commence par se créer un répertoire, et on choppe les sources sur le dépôt officiel git:

$ cd /tmp/mongodb/php
$ git clone http://github.com/mongodb/mongo-php-driver.git
Initialized empty Git repository in /tmp/mongodb/php/mongo-php-driver/.git/
remote: Counting objects: 4106, done.
remote: Compressing objects: 100% (1338/1338), done.
remote: Total 4106 (delta 3100), reused 3670 (delta 2742)
Receiving objects: 100% (4106/4106), 1.02 MiB | 269 KiB/s, done.
Resolving deltas: 100% (3100/3100), done.

La compilation et l’installation du module ne diffère pas par rapport à un autre module PHP:

$ cd mongo-php-driver
$ phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

$ ./configure --enable-mongo
[...]
configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands

$ make
[...]

Build complete.
Don't forget to run 'make test'.

Et finalement, en tant que root:

$ make install
Installing shared extensions:     /usr/lib/php/modules/

$ cat > /etc/php.d/mongo.ini << EOF
> extension=mongo.so
> EOF

On pourra vérifier la présence de l’extension:

$ php -i |grep -i mongo
/etc/php.d/mongo.ini,
MongoDB Support => enabled
[...]

Il ne reste plus qu’à tester du code php. La documentation est ici http://www.php.net/manual/en/mongo.manual.php.
Dans le script suivant, je prends pour exemple la base que j’ai créée dans un précédent article, et j’en adapte mes actions à un petit script PHP qui s’explique – presque – tout seul:

<?php

// Connection sur le serveur
$mongo_cnx = new Mongo();

// On utilise la base de données 'testdb' avec laquelle
// on a fait des tests précédemment:
$db = $mongo_cnx->testdb;

// On 'scanne' la collection 'people' dans laquelle
// on va retrouver nos enregistrements:
foreach($db->people->find() as $person)
{
    echo $person['name'] . ' - ' . $person['age'] . "\n";
}
// xin - 24
// patrick - 28
// patrick - 27

// On peut rajouter de nouvelles données:
$db->people->insert( array('name' => 'red', 'age' => 12) );

// On peut également faire des requetes plus précises comme dans
// le 'pseudo shell' mongo:
$red = $db->people->findOne( array('age' => 12) );
// $red sera:
// array(3) {
//   ["_id"]=>
//   object(MongoId)#7 (0) {
//   }
//   ["name"]=>
//   string(3) "red"
//   ["age"]=>
//   int(12)
// }

// Mise à jour de notre objet, en spécifiant un nouveau champs:
$red['city'] = 'Paris';

// Une mise à jour prend en premier argument le critère descriptif
// des objets à updater et l'objet à utiliser comme modification.
$db->people->update(array('name' => 'red', 'age' => 12), $red);
echo "There is now " . $db->people->count() . " person(s) in database.\n";

// On vérifie que la modification a été effectuée:
var_dump( $db->people->findOne( array('name' => 'red') ) );
// array(4) {
// ...
//   ["city"]=>
//   string(5) "Paris"

// Et les supprimer:
$r = $db->people->remove($red);
if( $r ) echo "Record deleted !\n";

$red = $db->people->findOne( array('name' => 'red') );
var_dump($red);
// Renvoie NULL.

Laisser un commentaire


NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>