MongoDB reemplazara y reemplazo

MongoDB reemplazara y reemplazo
Las funciones reemplazare () y reemplazar () se utilizarán para reemplazar un valor en la base de datos MongoDB. Solo hay una diferencia menor en el funcionamiento de ambos operadores. El método reemplazara se utiliza para reemplazar un documento solitario que coincida con un filtro establecido. El método toma tres argumentos: el filtro, el documento de reemplazo y un objeto de opciones opcionales. Mientras que el método ReplaceAll se usa para reemplazar todos los documentos en una colección con un nuevo conjunto de documentos. Este método se usa típicamente para actualizaciones a granel y puede ser adecuada al transferir datos de una colección a otra. El método toma dos argumentos: los documentos de reemplazo y un objeto de opciones opcionales. En esta guía hoy, discutiremos el uso de ambos operadores con la ayuda de ejemplos.

Crear colección

A partir del shell de MongoDB, estamos creando una nueva colección "ficticia" en nuestro MongoDB con la ayuda del siguiente comando: el método createCollection ().

Prueba> DB.CreateCollection ("Dummy")
OK: 1

Insertar documentos

Es hora de agregar documentos a la colección MongoDB. Para esto, se ha ejecutado el comando MongoDB a continuación que está insertando múltiples documentos en la colección "ficticia": función insertMany (). Los documentos contienen información sobre ciudades, países y un campo de conteo (con valores para algunos de los documentos). Cada documento de la matriz tiene un conjunto de pares de valor clave. El comando devuelve una respuesta que se reconoce la inserción.

Prueba> DB.Ficticio.InsertMany ([City: "Texas", País: "Inglaterra", Conteo: 5,
... Ciudad: "Los Ángeles", País: "América", Conde: 2, Ciudad: "Italia", país: "Francia",
... Ciudad: "Estambul", País: "Turquía", Conde: 8, Ciudad: "Delhi", país: "India", Conde: 7])

Reconocido: verdadero,
insertedids:
'0': ObjectId ("63C7B3588083BBF655D69684"),
'1': ObjectId ("63C7B3588083BBF655D69685"),
'2': ObjectId ("63C7B3588083BBF655D69686"),
'3': ObjectId ("63C7B3588083BBF655D69687"),
'4': ObjectId ("63C7B3588083BBF655D69688")

Mostrar documentos

Ahora, para recuperar y mostrar todos los documentos de la colección "ficticia", eliminaremos el método find () en la instrucción que se muestra a continuación. Los documentos devueltos se representan en un formato de matriz, con cada registro en la matriz como objeto. Los campos en cada documento incluyen "_id", "ciudad", "país" y "contar" i.mi. El campo "_id" es un identificador único asignado por MongoDB.

Prueba> DB.Ficticio.encontrar()
[
_id: ObjectId ("63C7B3588083BBF655D69684"), Ciudad: 'Texas', país: 'Inglaterra', recuento: 5,
_id: ObjectId ("63C7B3588083BBF655D69685"), Ciudad: 'Los Ángeles', País: 'América', Conte: 2,
_id: ObjectId ("63C7B3588083BBF655D69686"), Ciudad: 'Italia', país: 'Francia',
_id: ObjectId ("63C7B3588083BBF655D69687"), Ciudad: 'Estambul', país: 'Turquía', Conte: 8,
_id: ObjectId ("63C7B3588083BBF655D69688"), Ciudad: 'Delhi', país: 'India', Count: 7
]

Ejemplo 01: Reemplazar el método

El método reemplazara se utiliza para reemplazar un solo documento que coincida con un filtro especificado en MongoDB. Por lo tanto, lo usaremos en las siguientes instrucciones para reemplazar un documento dentro de la colección "ficticia". El primer argumento pasado al método reemplazara es el filtro. En este caso, el filtro es "Ciudad": "Delhi", lo que significa que el documento con el campo "Ciudad" establecido en "Delhi" será reemplazado. El segundo argumento pasado al método reemplazara es el documento de reemplazo, que es el nuevo documento que reemplazará el anterior: "país": "India-Pacific". Por lo tanto, el documento con el campo "Ciudad" establecido en "Delhi" ahora tendrá el campo "País" establecido en "India-Pacífico" en lugar de su valor anterior.

El código está envuelto en un bloque de captura de try, que se utiliza para manejar cualquier error que pueda ocurrir durante la ejecución del método reemplazara. Si se produce un error, será atrapado por el bloque de captura e impreso a la consola utilizando la función impreso (). La salida muestra que un documento ha sido igualado, modificado y el recuento subsert es cero.

Test> Prueba
... db.Ficticio.reemplazara ("ciudad": "delhi", "país": "India-Pacific");
… Catch (e) imprime (e);

Reconocido: Verdadero, C7B3588083BBF655D69684 "),
Insertedid: NULL,
MatchedCount: 1 y ',
ModifiedCount: 1,
UpsertedCount: 0

Después de mostrar todos los documentos de la colección "ficticia" en el shell utilizando la función "encontrar", tenemos que saber que el 5th El registro se ha actualizado con "Country: 'India-Pacific'".

Prueba> DB.Ficticio.encontrar()
[
_id: ObjectId ("63C7B3588083BBF655D69684"), Ciudad: 'Texas', país: 'Inglaterra', recuento: 5,
_id: ObjectId ("63C7B3588083BBF655D69685"), Ciudad: 'Los Ángeles', País: 'América', Conte: 2,
_id: ObjectId ("63C7B3588083BBF655D69686"), Ciudad: 'Italia', país: 'Francia',
_id: ObjectId ("63C7B3588083BBF655D69687"), Ciudad: 'Estambul', país: 'Turquía', Conte: 8,
_id: ObjectId ("63C7B3588083BBF655D69688"), País: 'India-Pacific'
]

Ejemplo # 02: Reemplazar el método de la opción Upsert

En este ejemplo de código, haremos uso de la opción Upsert en el método reemplazar () que agrega un nuevo registro si el especificado no se encuentra. Por lo tanto, el código que hemos estado utilizando a continuación incluye una opción para aumentar el documento. El primer argumento entregado al método reemplazara es el filtro "ciudad": "mali": el documento con el campo "Ciudad" establecido en "Mali" será reemplazado. El segundo argumento es el documento de reemplazo Ciudad: "Mali", país: "Maldivas", Conteo: 5. El campo de la "ciudad" establecido en "Mali" ahora tendrá el campo de "país" establecido en "Maldivas" y el "recuento" establecido en 5.

El tercer argumento pasado al método reemplazara es la opción upsert: true: para insertar un documento completamente nuevo si no se encuentra. El código está envuelto en un bloque de try-Catch una vez más para imprimir () el error captado en el comando. El resultado de la respuesta muestra que no se han igualado y modificado documentos, pero se ha elevado un documento: se inserta un nuevo documento ya que el documento especificado en el filtro no existía.

Test> Prueba db.Ficticio.reemplazara ("ciudad": "mali",
... Ciudad: "Mali", país: "Maldivas", cuenta: 5, upsert: true);
… Catch (e) imprime (e);

Reconocido: verdadero,
InsertedID: ObjectId ("63C7BFAAF8C41DF4B034B120"),
MatchedCount: 0,
ModifiedCount: 0,
UpsertedCount: 1

Para confirmar la inserción de un registro adicional, hemos mostrado toda la colección "ficticia" y tenemos el resultado que se muestra a continuación. La opción Upsert ha insertado un nuevo documento al final.

Prueba> DB.Ficticio.encontrar()
[
_id: ObjectId ("63C7B3588083BBF655D69684"), Ciudad: 'Texas', país: 'Inglaterra', recuento: 5,
_id: ObjectId ("63C7B3588083BBF655D69685"), Ciudad: 'Los Ángeles', País: 'América', Conte: 2,
_id: ObjectId ("63C7B3588083BBF655D69686"), Ciudad: 'Italia', país: 'Francia',
_id: ObjectId ("63C7B3588083BBF655D69687"), Ciudad: 'Estambul', país: 'Turquía', Conte: 8,
_id: ObjectId ("63C7B3588083BBF655D69688"), Ciudad: 'Delhi', país: 'India', Count: 7
_id: ObjectId ("63C7BFAAF8C41DF4B034B120"), Ciudad: 'Mali', país: 'Maldivas', Conte: 5
]

Ejemplo # 03: Método ReplaceAll

Aquí está la ilustración de cómo funciona el operador ReplaceAll () en MongoDB. La entrada para el operador $ reemplazo es el campo "país" de los documentos de la colección. El valor de "encontrar" es "i" y el valor de reemplazo es "e". Esto significa que todas las ocurrencias de la letra "i" en el campo "país" serán reemplazados por la letra "E". El resultado es un nuevo campo "país" con la cadena modificada. Por ejemplo, el valor original "India-Pacific" se reemplazaría con "Indea-Pacefec", el valor "América" ​​ahora es "Amereca" y "Maldivas" ahora es "Maldeves" como se demuestra en la salida también.

Prueba> DB.Ficticio.Aggregate ([$ Project: Country: $ ReplaceAll: input: "$ country", find: "i", reemplazo: "e"]))
[
_id: ObjectId ("63C7B3588083BBF655D69684"), país: 'Inglaterra',
_id: ObjectId ("63C7B3588083BBF655D69685"), país: 'Amereca',
_id: ObjectId ("63C7B3588083BBF655D69686"), país: 'Francia',
_id: ObjectId ("63C7B3588083BBF655D69687"), País: 'Turquía',
_id: ObjectId ("63C7B3588083BBF655D69688"), País: 'Indea-Pacefec',
_id: ObjectId ("63C7BFAAF8C41DF4B034B120"), país: 'Maldeves'
]

Actualicemos la ilustración anterior una vez más. El argumento de "encontrar" se ha aprobado con un valor "a" y el valor de reemplazo es "*****". Esto significa que todas las ocurrencias de la letra "A" en el campo "Ciudad" serán reemplazados por la cadena "******". El resultado es un nuevo campo de "ciudad" con la cadena modificada. Por ejemplo, el "Texas" original sería reemplazado por "Tex ***** S", y la "Italia" original se reemplazaría con "It ***** Ly" y así sucesivamente.

Prueba> DB.Ficticio.Aggregate ([$ Project: City: $ ReplaceAll: input: "$ City", Find: "A", Reemplazo: "******"]))
[
_id: ObjectId ("63C7B3588083BBF655D69684"), Ciudad: 'Tex ****** S',
_id: ObjectId ("63C7B3588083BBF655D69685"), Ciudad: 'Los Ángeles',
_id: ObjectId ("63C7B3588083BBF655D69686"), Ciudad: 'It ****** ly',
_id: ObjectId ("63C7B3588083BBF655D69687"), Ciudad: 'ist ****** nbul',
_id: ObjectId ("63C7B3588083BBF655D69688"), Ciudad: NULL,
_id: ObjectId ("63C7BFAAF8C41DF4B034B120"), Ciudad: 'M ****** Li'
]

Conclusión

Hemos definido las funciones reemplazar () y reemplazar () junto con la diferencia entre ellas. Hemos explicado 3 de los distintos ejemplos en el artículo I.mi. Método reemplazara () Para actualizar un solo campo, la opción Upsert se utilizará en el método Reemplazara para agregar un nuevo registro si no se encuentra un campo coincidente y el método ReplaceAll () para reemplazar una cadena en todos los documentos. El método reemplazare () es muy diferente del método reemplazo de reemplazo cuando se trata del efecto que agrega a la colección de la base de datos.