PHP & MongoDB: operaciones masivas de actualización

2021-08-07 - Categorías: PHP

Codekata o howto para usar el driver de PHP directo sin librerías para hacer actualizaciones masivas en los datos. Es un resumen sobre cómo hacer estas cosas que no he encontrado por Internet, así que aquí estamos probando y compartiendo..

Este post es un poco continuación sobre este otro sobre el rendimiento en inserciones de Mongodb.

Una operación básica para editar un campo de un documento

<?php
$startTime = microtime(true);
$mongoManager = new \MongoDB\Driver\Manager('mongodb://127.0.0.1:27017');
$bulkWrite = new \MongoDB\Driver\BulkWrite();

$filter = ['col2' => 'Data 2'];
$newObject = ['$set' => ['col3' => [
    'col30' => 'Data 30', 
    'col31' => 'Data 31'
]]];
$updateOptions = [
    'multi' => true, // Update multiple documents that match the filter..
    'upsert' => false // If no document match, creates a new one..
];

$bulkWrite->update($filter, $newObject, $updateOptions);
$result = $mongoManager->executeBulkWrite('testing.acollection', $bulkWrite);

var_dump($result);
$endTime = microtime(true);
echo 'done!'.PHP_EOL;
echo 'Taken time: '.($endTime - $startTime).' secs.'.PHP_EOL;

Simplemente busca todos los elementos de la colección testing.acollection que contengan el campo col2 con valor ‘Data 2’.

Las operaciones disponibles en MongoDB

Como operaciones disponibles hay muchas: el $set anterior, $pull, $push, $pop, $, $[], etcétera.. Todas las operaciones disponibles se pueden encontrar en la siguiente documentación:
https://docs.mongodb.com/manual/reference/operator/update/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2024 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.