Después de la configuración inicial de la extensión, se continuará explicando cómo comenzar con la biblioteca de usuario correspondiente para escribir nuestro primer proyecto.
La última cosa que se debe instalar para comenzar la aplicación en sí es la biblioteca PHP.
La biblioteca debe ser instalada con » Composer, un gestor de paquetes para PHP. Las instrucciones para instalar Composer en diferentes plataformas pueden encontrarse en su sitio web.
Instalar la biblioteca ejecutando:
$ composer require mongodb/mongodb
Esto producirá una salida similar a:
./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) - Installing mongodb/mongodb (1.0.0) Downloading: 100% Writing lock file Generating autoload files
Composer creará varios ficheros: composer.json
,
composer.lock
, y un directorio vendor
que
contendrá la biblioteca y todas las otras dependencias que su proyecto podría necesitar.
Además de gestionar sus dependencias, Composer también le proporcionará un autocargador (para las clases de estas dependencias). Asegúrese de que esté incluido al inicio de su script o en el código de arranque de su aplicación:
<?php
// Esta ruta debe apuntar al autocargador de Composer
require 'vendor/autoload.php';
Con esto hecho, ahora puede utilizar cualquier funcionalidad como se describe en la » documentación de la biblioteca.
Si ha utilizado controladores MongoDB en otros lenguajes, la API de la biblioteca debería resultarle familiar. Contiene una clase » Client para conectarse a MongoDB, una clase » Database para las operaciones a nivel de la base de datos (por ejemplo, los comandos, la gestión de las colecciones), y una clase » Collection para las operaciones a nivel de la colección (por ejemplo, los métodos » CRUD, la gestión de los índices).
Como ejemplo, aquí se muestra cómo insertar un documento en la colección beers de la base de datos demo:
<?php
require 'vendor/autoload.php'; // incluir el autocargador de Composer
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
echo "Inserted with Object ID '{$result->getInsertedId()}'";
?>
Dado que el documento insertado no contenía un campo _id
, la extensión
generará un MongoDB\BSON\ObjectId para que el servidor
lo utilice como _id
. Este valor también está disponible para
el llamador a través del objeto de resultado devuelto por el método insertOne
.
Después de la inserción, se pueden consultar los datos que acaba de insertar. Para ello, se utiliza el método find
, que devuelve un cursor
iterable:
<?php
require 'vendor/autoload.php'; // incluir el autocargador de Composer
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
foreach ($result as $entry) {
echo $entry['_id'], ': ', $entry['name'], "\n";
}
?>
Aunque los ejemplos no lo muestran, los documentos BSON y los arrays
son deserializados como clases especiales en la biblioteca por defecto. Estas clases extienden ArrayObject para facilidad de uso
e implementan las interfaces MongoDB\BSON\Serializable
y MongoDB\BSON\Unserializable de la extensión para garantizar que los valores conserven su tipo cuando se serializan nuevamente en BSON. Esto evita un inconveniente de la antigua extensión mongo
donde los arrays podrían convertirse en documentos, y viceversa. Ver la
especificación Persistir datos para más información sobre
cómo se convierten los valores entre PHP y BSON.