clicko-informatica-mongodb-with-php

En esta guía os mostraré como realizar las operaciones básicas CRUD (create, read, update, delete) de un modelo de datos en el lenguaje del lado de servidor PHP utilizando MongoDB como motor de base de datos. En otros blogs ya os hemos hablado de este motor de base de datos.

Para llevar a cabo este tutorial, hemos creado una base de datos en MongoDb llamada test y una colección usuarios.

Insertar un documento

La siguiente operación inserta un documento en la colección de usuarios en la base de datos de prueba:

<?php

$collection = (new MongoDB\Client)->test->users;

$insertOneResult = $collection->insertOne([
    'username' => 'admin',
    'email' => 'admin@example.com',
    'name' => 'Admin User',
]);

printf("Inserted %d document(s)\n", $insertOneResult->getInsertedCount());

var_dump($insertOneResult->getInsertedId());

El método MongoDB\Collection::insertOne() inserta un solo documento en MongoDB y devuelve una instancia de MongoDB\InsertOneResult, que se puede utilizar para acceder a la ID del documento insertado.

Resultado:
Inserted 1 document(s)
object(MongoDB\BSON\ObjectId)#11 (1) {
  ["oid"]=>
  string(24) "579a25921f417dd1e5518141"
}

 

Insertar varios documentos

El método MongoDB\Collection::insertMany() permite insertar varios documentos en una operación de escritura. Devuelve una instancia de MongoDB\InsertManyResult, que se puede usar para acceder a los ID de los documentos insertados.

El siguiente fragmento de código inserta dos documentos en la colección de usuarios en la base de datos de test:

<?php

$collection = (new MongoDB\Client)->test->users;

$insertManyResult = $collection->insertMany([
    [
        'username' => 'admin',
        'email' => 'admin@example.com',
        'name' => 'Admin User',
    ],
    [
        'username' => 'test',
        'email' => 'test@example.com',
        'name' => 'Test User',
    ],
]);

printf("Inserted %d document(s)\n", $insertManyResult->getInsertedCount());

var_dump($insertManyResult->getInsertedIds());
Resultado:
<?php

$collection = (new MongoDB\Client)->test->users;

$insertManyResult = $collection->insertMany([
    [
        'username' => 'admin',
        'email' => 'admin@example.com',
        'name' => 'Admin User',
    ],
    [
        'username' => 'test',
        'email' => 'test@example.com',
        'name' => 'Test User',
    ],
]);

printf("Inserted %d document(s)\n", $insertManyResult->getInsertedCount());

var_dump($insertManyResult->getInsertedIds());

 

Consultar un documento

El siguiente ejemplo busca el documento con identificador igual a “94301”:

<?php

$collection = (new MongoDB\Client)->test->zips;

$document = $collection->findOne(['_id' => '94301']);

var_dump($document);

MongoDB\Collection::findOne() devuelve el primer documento que coincide con la consulta, o nulo si ningún documento coincide con el identificador consultado.

Resultado:
object(MongoDB\Model\BSONDocument)#13 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    string(5) "94301"
    ["city"]=>
    string(9) "PALO ALTO"
    ["loc"]=>
    object(MongoDB\Model\BSONArray)#12 (1) {
      ["storage":"ArrayObject":private]=>
      array(2) {
        [0]=>
        float(-122.149685)
        [1]=>
        float(37.444324)
      }
    }
    ["pop"]=>
    int(15965)
    ["state"]=>
    string(2) "CA"
  }
}

 

Actualizar un documento

Utilizamos el método MongoDB\Collection::updateOne() para actualizar un solo documento que coincida con un filtro establecido. Esta función devuelve un objeto MongoDB\UpdateResult, que puede usar para acceder para conocer los detalles del resultado de la actualización.

<?php

$collection = (new MongoDB\Client)->test->users;
$collection->drop();

$collection->insertOne(['name' => 'Adrian', 'country' => 'es']);
$collection->insertOne(['name' => 'Aleyda', 'country' => 'ny']);
$updateResult = $collection->updateOne(
    ['state' => 'ny'],
    ['$set' => ['country' => 'us']]
);

printf("Matched %d document(s)\n", $updateResult->getMatchedCount());
printf("Modified %d document(s)\n", $updateResult->getModifiedCount());
Resultado:
Matched 1 document(s)
Modified 1 document(s)

 

Eliminar un documento

El método MongoDB\Collection::deleteOne() elimina el documento que coincida con los criterios del filtro y devuelve un objeto MongoDB\DeleteResult, que nos facilita detalles de la eliminación.

Si varios documentos coinciden con los criterios del filtro, deleteOne() elimina el primer documento coincidente.

<?php

$collection = (new MongoDB\Client)->test->users;
$collection->drop();

$collection->insertOne(['name' => 'Bob', 'state' => 'ny']);
$collection->insertOne(['name' => 'Alice', 'state' => 'ny']);
$deleteResult = $collection->deleteOne(['state' => 'ny']);

printf("Deleted %d document(s)\n", $deleteResult->getDeletedCount());
Resultado:
Deleted 1 document(s)

 
En el próximo tutorial, hablaremos de cómo utilizar y operar con mongoDB con el driver de conexión y librería para Python.

Facebook
Facebook
Twitter
Visit Us
LinkedIn