Saltar al contenido

¿Cómo Desarrollar Operaciones CRUD para MongoDB en PHP?

10 junio, 2019

Las operaciones CRUD crean, leen, actualizan y borran documentos. La clase MongoDB \ Colección de la Biblioteca PHP de MongoDB. ¿Cómo Desarrollar Operaciones CRUD para MongoDB en PHP?

Implementa la especificación CRUD de controlador cruzado de MongoDB, que proporciona acceso a métodos para insertar, buscar, actualizar y eliminar documentos en MongoDB.

Este documento proporciona una introducción general a la inserción, consulta, actualización y eliminación de documentos utilizando la Biblioteca PHP de MongoDB.

¿Cómo Desarrollar Operaciones CRUD para MongoDB en PHP?

  • Prerrequisitos: Conocimiento de PHP y Base de Datos.
  • Vamos a hacer alguna operación CRUD en script PHP.

Seleccionar Colección

  • Seleccionar una colección es como seleccionar una base de datos:
$conn = new Mongo();
$db = $conn->selectDB('testdb');
$collection = $db->myc;
  • La colección puede existir o no existir, sin importar qué, obtendrá una colección, puede ser la existente o la creada.

Agregar Documento

  • Es casi trivial, sólo define una matriz e insértala.
$doc = array(
'title' => 'this is title',
'content' => "this is content",
'category' => 'database'
);

$collection->insert($doc);

$result = $collection->find();

foreach($result as $doc)
print_r($doc);
  • El foreach imprimirá todos los documentos en colección.
Array
(
[_id] => MongoId Object
(
[$id] => 5188bead7ab2adec27000000
)

[title] => this is title
[content] => this is content
[category] => database
)
Array
(
[_id] => MongoId Object
(
[$id] => 5188beb77ab2ad7805000000
)

[title] => this is title
[content] => this is content
[category] => database
)
  • Como puede ver, Mongodb usa una identificación única para identificar cada documento.

MongoDB nos proporciona el siguiente método para insertar varios documentos en una colección.
db.collection.insertMany ()

Documento de Consulta

  • Encuentra un documento por id:
$id = new MongoId('5188bebf7ab2ad7422000000');
$one = $collection->findone(array('_id' => $id));
print_r($one);
  • Es muy similar a las instrucciones de selección de SQL:
SELECT * FROM collection WHERE _id = $id

También puede seleccionar por otras teclas:
$results = $collection->findone(array(
'title' => 'this is title',
));
  • La Simulación de SQL:
SELECT * FROM collection WHERE title = 'this is title'

Como hay que Seleccionar Columnas Particulares

$results = $collection->findone(array(
'title' => 'this is title',
), array(
'content'
));
echo $results['content'];
  • La segunda matriz son las columnas que deben devolverse.

Actualizar Documento

$collection->update(
array( '_id' => new MongoId('5188bebf7ab2ad7422000000')),
array( '$set' => array( 'content' => 'update content' ) )
);

$id = new MongoId('5188bebf7ab2ad7422000000');
$one = $collection->findone(array('_id' => $id));

print_r($one);

El conjunto $set le dice a Mongodb que es una actualización, no reemplaza todo el documento.

  • La actualización no solo puede actualizar la columna existente, sino también agregar nuevas columnas:
$collection->update(
array( '_id' => new MongoId('5188bebf7ab2ad7422000000')),
array( '$set' =>
array( 'keywords' =>
array( 'name', 'mongo', 'software', 'web')
)
)
);

$id = new MongoId('5188bebf7ab2ad7422000000');
$one = $collection->findone(array('_id' => $id));

print_r($one);
  • Salida:
Array
(
[_id] => MongoId Object
(
[$id] => 5188bebf7ab2ad7422000000
)

[category] => database
[content] => update content
[keywords] => Array
(
[0] => name
[1] => mongo
[2] => software
[3] => web
)

[title] => this is title
)
  • Esto no es lo que puede hacer fácilmente en una base de datos relacional.
MongoDB nos proporciona los siguientes métodos para actualizar los documentos de la colección.
db.collection.updateOne ()
db.collection.updateMany ()
db.collection.replaceOne ()

Eliminar Documento

$collection->remove(array('_id'=> new MongoId('5188bebf7ab2ad7422000000')), array("justOne" => true) );

Eliminar Muchos Documentos

MongoDB\Collection::deleteMany() elimina todos los documentos que coinciden con los criterios de filtro y devuelve un MongoDB\DeleteResult, que puede usar para acceder a las estadísticas sobre la operación de eliminación.

MongoDB\Collection::deleteMany() tiene un parámetro requerido: un filtro de consulta que especifica el documento a eliminar.

La siguiente operación elimina todos los documentos en los que el valor del campo de estado es “ny”:

<?php

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

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

printf("Deleted %d document(s)\n", $deleteResult->getDeletedCount());
  • La salida entonces se asemejaría a:

Deleted 2 document(s)

¿Nos das 5 estrellas? ?