MongoDB $ Round

MongoDB $ Round
Mientras trabajamos con valores numéricos, nos encontramos con muchos valores decimales que contienen 1 o más puntos flotantes al final. En matemáticas, podemos convertir los valores de flotación para que sean un valor completo redondeando los puntos flotantes después del "punto". Hay ciertas reglas para completar los valores de punto decimal i.mi., Solo puede estar redondeado a su próximo valor consecutivo si el valor de punto flotante después del punto es "5". Mientras trabaja con MongoDB, es posible que encuentre valores decimales y desee convertirlos en números enteros. Para hacerlo, MongoDB nos proporciona el operador "redondo" para usar dentro de la función agregada. En esta guía, veremos cómo podemos usarla.

Crear colección de bases de datos

Hemos comenzado el shell de MongoDB y mostramos todas las bases de datos disponibles a través de la consulta "Show DBS" de MongoDB. La salida de esta instrucción muestra 3 bases de datos incorporadas, mientras que la base de datos ficticia "prueba" ya se está utilizando.

Prueba> Mostrar dbs
administrador 40.00 kib
Configuración 72.00 kib
Local 72.00 kib

Si desea usar una base de datos específica, ejecute la instrucción "Usar" junto con el nombre de la base de datos y usará la base de datos en particular en un momento.

Prueba> Usar prueba
ya en la prueba de DB

Ahora que hemos terminado de movernos dentro del espacio de trabajo de la base de datos de "prueba", se nos permite crear colecciones en ella. Por lo tanto, vamos a crear una colección llamada "orden" dentro de esta base de datos de "prueba" mediante el uso de la función "createCollection" en la instrucción. La consulta para crear una colección junto con su salida se ha demostrado a continuación.

Prueba> DB.createCollection ("orden")
OK: 1

Para obtener todas las colecciones de la base de datos "Test" en la lista de MongoDB, use la consulta que se muestra y obtendrá la colección "Orden" en la lista también de.

Prueba> Mostrar colecciones
Orden

Insertar documentos a la colección

Después de generar la colección "orden", no podemos dejarlo vacío ya que tenemos que trabajar en puntos decimales para utilizar el operador redondo de MongoDB. Por lo tanto, necesitamos insertar al menos un campo que contenga valores de puntos decimales en él. Entonces, hemos estado probando la función InsertMany en la instrucción precedida por el nombre de una colección "Orden" para insertar un total de 3 documentos. Cada documento contiene 3 campos I.mi., El campo "Título" del tipo de cadena, el campo "Precio" del tipo entero y el campo de "impuesto" del tipo de flotación. El campo de impuestos contiene valores con 1 o más puntos flotantes.

Prueba> DB.Orden.InsertMany ([Título: "Pizza", Precio: 4500, Impuesto: 99.5,
... Título: "Hamburguesa", Precio: 4200, Impuesto: 49.56, Título: "Platero", Precio: 3900, Impuesto: 55.25])

Reconocido: verdadero,
insertedids:
'0': ObjectId ("63B5A193639E00F0B5C51FAE"),
'1': ObjectId ("63B5A193639E00F0B5C51FAF"),
'2': ObjectId ("63B5A193639E00F0B5C51FB0")

Después de insertar estos 3 documentos en la colección de "orden" de la base de datos, los mostraremos en la consola MongoDB y los veremos claros. Para esto, eliminaremos la función de "encontrar" de MongoDB precedida por el nombre de una colección "Orden" en la instrucción. Use corchetes rizados "" dentro del argumento para mostrar todos los documentos de esta colección sin especificar uno. La salida para esta instrucción ha estado mostrando un total de 3 documentos debajo.

Prueba> DB.Orden.encontrar()
[

_id: ObjectId ("63B5A193639E00F0B5C51FAE"),
Título: 'Pizza',
Precio: 4500,
Impuesto: 99.5
,

_id: ObjectId ("63B5A193639E00F0B5C51FAF"),
Título: 'Burger',
Precio: 4200,
Impuesto: 49.56
,

_ID: ObjectId ("63B5A193639E00F0B5C51FB0"),
Título: 'plato',
Precio: 3900,
Impuesto: 55.25

]

Ejemplo # 01:

Ahora que hemos terminado con los requisitos previos y la configuración de la base de datos, vamos a usar el operador redondo en instrucción de shell de MongoDB para convertir los valores decimales en números enteros. Como solo tenemos un campo de "impuesto" que contiene los valores decimales, aplicaremos el operador redondo solo en él. Para usar el operador redondo, debemos usar la función agregada () de MongoDB en las instrucciones. Esta instrucción inicia sus argumentos con el "proyecto" del operador seguido del operador redondo.

También puede nombrar el campo para que se muestre la salida para los valores de punto decimal i.mi., valores redondeados. Luego, el operador "redondo" debe contener el nombre de un campo para actualizarse junto con el número total de puntos decimales que desea que se redondee. En nuestro caso, completamos todos los valores de campo de "impuestos" en 1 y obtuvimos los valores modificados en la salida. Estos valores contienen 1 valor de punto decimal ahora: 99.5 para permanecer 99.5 Como ya tiene solo 1 punto decimal, 49.56 a 49.6 después de redondear 6 y 55.25 a 55.2.

Prueba> DB.Orden.Aggregate ([$ Project: RoundedValue: $ Round: ["$ Tax", 1]]))
[
_id: ObjectId ("63B5A193639E00F0B5C51FAE"), RoundedValue: 99.5,
_id: ObjectId ("63B5A193639E00F0B5C51FAF"), RoundedValue: 49.6,
_id: ObjectId ("63B5A193639E00F0B5C51FB0"), RoundedValue: 55.2
]

Cuando ejecuta la función find () para ver el "impuesto" de campo de todos los documentos, verá que los registros no se actualizan en la colección porque el operador redondo solo funciona en tiempo de ejecución.

Prueba> DB.Orden.encontrar()
[

_id: ObjectId ("63B5A193639E00F0B5C51FAE"),
Título: 'Pizza',
Precio: 4500,
Impuesto: 99.5
,

_id: ObjectId ("63B5A193639E00F0B5C51FAF"),
Título: 'Burger',
Precio: 4200,
Impuesto: 49.56
,

_ID: ObjectId ("63B5A193639E00F0B5C51FB0"),
Título: 'plato',
Precio: 3900,
Impuesto: 55.25

]

Si desea obtener un número completo en lugar de un valor de punto decimal, puede usar el número total de puntos decimales "0" en la consulta. Por lo tanto, hemos actualizado la misma instrucción para el campo "Impuesto" y reemplazado 1 con 0. Después de ejecutar la consulta de función agregada, tenemos los valores de número completo para el "impuesto" de campo de los 3 documentos de la colección "Orden" I.mi., 99.5 a 100, 49.56 a 50 y 55.25 a 55.

Prueba> DB.Orden.Aggregate ([$ Project: RoundedValue: $ Round: ["$ Tax", 0]])
[
_id: ObjectId ("63B5A193639E00F0B5C51FAE"), RoundedValue: 100,
_id: ObjectId ("63B5A193639E00F0B5C51FAF"), RoundedValue: 50,
_id: ObjectId ("63B5A193639E00F0B5C51FB0"), RoundedValue: 55
]

Ahora, ejecutando la misma instrucción de función find () en el shell MongoDB, tenemos la misma salida que en la ilustración anterior I.mi. Sin cambios porque la ronda funciona solo en tiempo de ejecución.

Prueba> DB.Orden.encontrar()
[

_id: ObjectId ("63B5A193639E00F0B5C51FAE"),
Título: 'Pizza',
Precio: 4500,
Impuesto: 99.5
,

_id: ObjectId ("63B5A193639E00F0B5C51FAF"),
Título: 'Burger',
Precio: 4200,
Impuesto: 49.56
,

_ID: ObjectId ("63B5A193639E00F0B5C51FB0"),
Título: 'plato',
Precio: 3900,
Impuesto: 55.25

]

Ejemplo # 02:

Usemos otra forma de utilizar el operador redondo en la carcasa de MongoDB para redondear los valores del punto decimal I.mi., Bastante lo mismo con una pequeña diferencia en la colocación de operadores y argumentos. Dentro de la función agregada, colocará los argumentos en el mismo formato de matriz a partir del uso del operador del proyecto. Vamos a usar el nombre de un campo para actualizar y establecer su estado como "1" para mostrar su valor real que reside en la colección en este momento.

Luego, agregaremos un nuevo campo llamado 'Valor "seguido del operador redondo y el nombre de un" impuesto "de campo como argumento para actualizarlo. Convertirá todos los valores del punto decimal a un número entero después de redondear los puntos decimales al final. La salida muestra los valores de campo "impuestos" originales junto con los valores redondeados actualizados en el campo "Valor".

Prueba> DB.Orden.Aggregate ([$ Project: Tax: 1, valor: $ Round: ["$ Tax"]]))
[
_id: ObjectId ("63B5A193639E00F0B5C51FAE"), Tax: 99.5, valor: 100,
_id: ObjectId ("63B5A193639E00F0B5C51FAF"), Tax: 49.56, valor: 50,
_id: ObjectId ("63B5A193639E00F0B5C51FB0"), Tax: 55.25, valor: 55
]

Conclusión

Después de discutir el concepto de redondear los valores decimales en el campo de las matemáticas, hemos discutido cómo el operador "redondo" de MongoDB puede ser descartado para redondear los valores de OFF por varios puntos. Para borrar el uso del operador redondo en MongoDB, hemos demostrado dos ejemplos que contienen la función agregada que utiliza el operador redondo. Usando estos ejemplos, hemos redondeado los valores en 1 y 2 puntos en tiempo de ejecución, mientras que también hemos visto que el uso del operador redondo no modifica el valor real en la colección.