Mientras usamos operadores, no solo podemos hacer comparaciones entre los operandos, sino que también podemos buscar los valores faltantes, actualizar los registros y muchos más. El operador ifNull de MongoDB, uno de esos operadores, tiene su lugar especial porque verifica si el campo específico contiene un valor nulo o no. Si el campo en particular tiene un valor nulo, podemos realizar en consecuencia: reemplazar el valor con un nuevo valor o hacerlo vacío. En este tutorial, aprenderá el uso del operador ifnull de MongoDB usando shell MongoDB. Por lo tanto, debe tener MongoDB instalado junto con sus dependencias.
Crear base de datos y colección
Pasemos hacia la implementación de algunas consultas en el shell MongoDB para mostrar el uso del operador "IfNull" de MongoDB. Antes de eso, estamos echando un vistazo a la disponibilidad de las bases de datos actuales. Actualmente, tenemos 3 bases de datos incorporadas disponibles en nuestro MongoDB según la instrucción "Show DBS". Necesitamos crear la base de datos ficticia que usaremos en nuestros próximos ejemplos. Para esto, primero debemos crear una colección de bases de datos.
Prueba> Mostrar dbs
administrador 40.00 kib
configuración 60.00 kib
Local 72.00 kib
Al verificar las colecciones totales, tenemos en nuestra base de datos, descubrimos que no hay una colección por ahora y necesitamos crear una que sea la instrucción de "Mostrar colecciones".
Prueba> Mostrar colecciones
Para crear una nueva colección, debe ejecutar el método "CreateCollection" de MongoDB en su shell. Debe tomar el nombre de una colección recién creada en los parámetros, "datos". El resultado de salida como Ok: 1 muestra que su colección "datos" se genera correctamente.
Prueba> DB.createCollection ("datos")
OK: 1
Cuando busque todas las colecciones ahora, verá una colección recién hecha que se enumera allí.
Prueba> Mostrar colecciones
Datos
Después de generar una nueva colección en la base de datos de MongoDB, cuando buscamos la base de datos, la base de datos "Test" que utilizamos sin crear se muestra en la lista.
Prueba> Mostrar dbs
administrador 40.00 kib
Configuración 108.00 kib
Local 72.00 kib
Prueba 144.00 kib
Insertar registros en la colección
Por ahora, debe estar seguro de que la recopilación de "datos" está vacío, ya que no le agregamos ningún registro. Por lo tanto, una colección vacía no tiene sentido y necesitamos insertar documentos en ella. Como hemos estado trabajando para el operador "$ ifnull", también debemos agregar los campos con valores nulos. Por lo tanto, comenzando con la inserción de nuevos registros documentados en la recopilación de "datos", hemos probado la función InsertMany () de MongoDB para insertar más de 1 registro a la vez. La inserción de un total de 6 registros ha tenido lugar en un solo paso.
Los registros deben estar en un formato de matriz o [] paréntesis al comienzo y al final de los registros. Cada registro debe estar separado por una coma ",", y los soportes rizados "". Casi todos los registros tienen al menos 2 campos: campo "nombre" y "edad". Mientras que todos los campos de "nombre" contienen un valor de cadena, hay algunos registros en los que la "edad" del campo no contiene ningún registro, valor nulo o indefinido. Después de la ejecución exitosa de esta consulta de inserción para la recopilación de "datos", obtendrá el reconocimiento en la pantalla de shell MongoDB que muestra las ID de generación automáticamente para cada registro.
Prueba> DB.Datos.insertMany ([nombre: "Peter", edad: 24, nombre: "ana", edad: null, nombre: "bryan", edad: "", nombre: "nina", edad: 33 , Nombre: "John", nombre: "Michael", edad: indefinido])
Reconocido: verdadero,
insertedids:
'0': ObjectId ("63BC3F53A2E5D7C94C4DE66B"),
'1': ObjectId ("63BC3F53A2E5D7C94C4DE66C"),
'2': ObjectId ("63BC3F53A2E5D7C94C4DE66D"),
'3': ObjectId ("63BC3F53A2E5D7C94C4DE66E"),
'4': ObjectId ("63BC3F53A2E5D7C94C4DE66F")
'5': ObjectId ("63BCBF7552359FABFC4A770E")
Después de insertar un total de 6 registros con éxito en la recopilación de "datos" de la base de datos de "prueba" de MongoDB, también debe echar un vistazo a todos estos registros. Para esto, debe mostrar cada uno de los registros de recopilación de "datos" en el formato JSON utilizando la función foreach (). Para esto, debe encontrar todos los registros a través de la función "Buscar" y luego aplicar la función foreach () como se muestra en la salida a continuación. El argumento "printjson" es imprescindible aquí. La salida para mostrar los 6 registros de la recopilación de "datos" en el formato JSON se adjunta a continuación.
Prueba> DB.Datos.encontrar().foreach (printjson)
_id: ObjectId ("63BC3F53A2E5D7C94C4DE66B"), Nombre: 'Peter', edad: 24
_id: ObjectId ("63BC3F53A2E5D7C94C4DE66C"), Nombre: 'ANA', Age: Null
_id: ObjectId ("63BC3F53A2E5D7C94C4DE66D"), Nombre: 'Bryan', Age: "
_id: ObjectId ("63BC3F53A2E5D7C94C4DE66E"), Nombre: 'Nina', edad: 33
_id: ObjectId ("63BC3F53A2E5D7C94C4DE66F"), Nombre: 'John'
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Nombre: 'Michael', Age: Null
Aplique el operador "IfNull" en el campo "Age" de la recopilación de "datos" tal como contiene valores indefinidos y nulos en documentos. La función agregada () de un mongodb debe utilizarse para usar el operador "ifnull" en el campo "edad". Por lo tanto, comenzamos la consulta con el nombre de una colección. Le sigue la función "agregado" que contiene el operador del proyecto para proyectar en el campo particular en el que se aplicará el operador "IfNull". El campo "Nombre" se establece en 1 para que se pueda mostrar. El operador "IfNull" contiene dos argumentos como ["", ""] aplicado al campo "Age". La salida de esta consulta muestra la edad: "que reemplazó los valores de edad sin nada. Esto se debe a que no hemos definido el nombre de un campo de "edad" en el primer argumento de un operador de Ifnull.
Prueba> DB.Datos.agregado ([$ proyecto: nombre: 1, edad: $ ifnull: ["", ""]])
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Nombre: 'Peter', Age: ",
_id: ObjectId ("63BCB7A552359FABFC4A7702"), Nombre: 'ANA', Age: ",
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Nombre: 'Bryan', Age: ",
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Nombre: 'Nina', edad: ",
_id: ObjectId ("63BCB7D052359FABFC4A7705"), Nombre: 'John', Age: ",
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Nombre: 'Michael', edad: "
]
Cuando usa cualquier expresión de cadena en el primer argumento del operador "IfNull", reemplazará todos los valores de un campo de "edad" con esa cadena. En la salida que se muestra a continuación, hemos utilizado la cadena "Undefined" y ha tomado el lugar de los valores originales en el campo de edad de todos los registros.
Prueba> DB.Datos.agregado ([$ proyecto: nombre: 1, edad: $ ifnull: ["Undefined", ""]])
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Nombre: 'Peter', edad: 'Undefinado',
_id: ObjectId ("63BCB7A552359FABFC4A7702"), Nombre: 'ANA', Age: 'Undefined',
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Nombre: 'Bryan', Age: 'Undefined',
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Nombre: 'Nina', Age: 'Undefined',
_id: ObjectId ("63BCB7D052359FABFC4A7705"), Nombre: 'John', edad: 'Undefinado',
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Nombre: 'Michael', Age: 'Undefined'
]
Para evitar tal cosa, tendremos que usar el campo de "edad" como el primer argumento al operador IfNull junto con el signo "$". Entonces, deja que el segundo argumento esté vacío i.mi., Segundo argumento como su valor. En la ejecución de esta instrucción agregada, mostraremos la salida adjunta a continuación. Ahora, puede ver que el campo de edad ha estado mostrando sus valores originales donde no hay un valor "nulo". Además, donde los valores son nulos o indefinidos, el campo de edad se reemplaza con vacío ".
Prueba> DB.Datos.agregado ([$ proyecto: nombre: 1, edad: $ ifnull: ["$ edad", ""]])
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Nombre: 'Peter', edad: 24,
_id: ObjectId ("63BCB7A552359FABFC4A7702"), Nombre: 'ANA', Age: ",
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Nombre: 'Bryan', Age: ",
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Nombre: 'Nina', edad: 33,
_id: ObjectId ("63BCB7D052359FABFC4A7705"), Nombre: 'John', Age: ",
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Nombre: 'Michael', edad: "
]
Echemos un vistazo a diferentes valores de salida para los valores nulos del campo "Edad" utilizando el operador IFNull en la instrucción agregada. Esta vez, estamos utilizando la cadena de "valor nulo" como el segundo argumento al operador IfNull para reemplazar los valores nulos en el campo "edad". El resultado adjunto se muestra el reemplazo de valores nulos con la cadena "Valor nulo".
Prueba> DB.Datos.Aggregate ([$ Project: Nombre: 1, edad: $ ifnull: ["$ edad", "valor nulo"]])
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Nombre: 'Peter', edad: 24,
_id: ObjectId ("63BCB7A552359FABFC4A7702"), Nombre: 'ANA', Age: 'Null Value',
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Nombre: 'Bryan', Age: ",
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Nombre: 'Nina', edad: 33,
_id: ObjectId ("63BCB7D052359FABFC4A7705"), Nombre: 'John', Age: 'Null Value',
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Nombre: 'Michael', Age: 'Null Value'
]
Conclusión
Este artículo contiene una discusión sobre el uso del operador ifnull a partir de su introducción a la ilustración final. Las ilustraciones demuestran cómo se puede reemplazar un valor original "nulo" de un cierto campo con un nuevo valor. Después de discutir el procedimiento completo de usar el operador IFNull en la función agregada de MongoDB, llegamos al resultado de que el primer argumento del operador IfNull debería ser un nombre de campo con un carácter "$" para evitar complicaciones.