Curso certificación mongodb

[1.1] Identificar los tipos de campos permitidos en los BSON de MongoDB

Dentro de la primera sección que nos describe MongoDB para la certificación, encontraremos preguntas relacionadas a campos, y como deben de usarse. Mientras que algunos pueden ser intuitivos, es obligatorio conocer su uso correcto. Debemos entonces, saber los tipos disponibles, y cuales son obsoletos.

Contexto teórico

En MongoDB, los campos disponibles deben pertenecer a: Double, String, Object, Array, Binary data (binData), ObjectId, Boolean, Date, Null, Regular Expression, JavaScript, 32-bit integer (int), Timestamp, 64-bit inter (long), Decimal128, min key, max key.

Han quedado obsoletos: Undefined, DBPointer, Symbol, JavaScript code with scope.

Toda la información referente a los campos se encuentra en la información oficial: click aquí

Aunque de cara a la certificación, no hace falta conocerlos en detalle, queremos dejar algunos comentarios:

Date and Timestamp

Boolean

  • Ambos balores lógicos (true, false) deben ir siempre en minúsculas.

Números

  • Double es un número con decimales

ObjectId

  • Es una variable de 12 bytes y se expresa en base hexadecimal, por tanto, está compuesta por 24 caracteres, del 0 al 9 y de la a la f, en minúscula
  • Se puede especificar a la hora de insertar un documento, sino MongoDB seguirá la siguiente lógica. Consiste en 4 bytes relacionados con el timestamp de la creación, después seguirán 5 bytes aleatorio y los últimos tres bytes son un contador incremental, iniciado con un valor aleatorio.

Por otro lado, es muy importante que se familiaricen con el concepto BSON. Un BSON es un JSON pero de tipo binario. Al estar guardado en un formato especial, y no en texto, también se pueden aplicar unas normativas, como la del tipado de los campos. También recordar que por defecto, el tamaño máximo es de 16MB.

Secuencia: entender los tipos de datos BSON


Carga de datos

En el tutorial "como conseguir mi servidor gratuito de MongoDB en la nube" se explicó como conseguir un entorno en Atlas, y como cargar con valores iniciales por defecto, puedes consultar en esta página.

Acceder a "sample_restaurants"

Desde la herramienta Compass, así como se especifico en el tutorial "Como conectarme desde mi escritorio con Compass y MongoSh.", se debe acceder desde la interfaz gráfica a la base de datos "sample_restaurants". Se extenderá el menú y aparecerán dos colecciones: neighborhoods y restaurants. Clicar sobre restaurants y aparecerán los primeros 20 resultados de la colección


colecciones disponibles en la base de datos sample_resturants

Visualizar propiedades

Cuando ponemos el puntero del ratón sobre un documento, aparecen unos botones en el recuadro del documento. Nos interesa el primer botón, el que tiene un lápiz, al clicarlo, aparecen el formato de los campos. La siguiente imagen muestra el detalle de un documento:

detalle documento sample restaurants

Sobre la imagen previa, queremos comentar:

  • El primer campo, llamado _id y de tipo ObjectId , es obligatorio y su valor debe ser único para cada documento de una misma colección.
  • En este documento hay campos de los tipos: ObjectId, Object, String, Array, Double, String, Int32.
  • Los campos de tipo Object, son subdocumentos, también llamados, documentos embedidos.
  • Vemos dos tipos de Arrays. Uno de ellos se encuentra en el subdocumento "address.coord", el cual está conformado por dos campos del tipo Double, mientras que el campo "grades" es un cadena de Objetos.
  • Los String (cadena de carácteres) deben iniciarse y finalizarse con comillas dobles.
  • Hay diferentes tipos de numéricos. El "Double", que es usado para cordenadas, puede ser negativo. El Int32 puede considerarse como un objeto de tipo Integer, mientras que el Int64, se asemeja a un Long.
  • Aunque el ObjectId es obligatorio, y ligado al comportamiento de la base de datos. También hay un restaurant_id propio del modelo, y cuyo valor está relacionada con la lógica de negocio.

Pregunta 1


Que tipo de datos numéricos están disponibles en un BSON de MongoDB

A. Float

B. Number

C. Bigint

D. 32-bit integer

La pregunta está orientada a los campos numéricos. En el caso de los campos con coma, la única opción posible es el Double, por tanto, la opción A queda descartada. Existen diferentes tipos de campo numéricos, pero Number no es uno de ellos, tampoco bigint. Para valores grandes de enteros usamos el 64-bits integer o long, pero no Bigint. Al existir el 64 bits para los enteros grandes, su equivalente que ocupa la mitad de tamaño es el el de 32 bits. Respuesta correcta es D. También recordar que aun pueden ser más grandes con el campo Decimal128

Pregunta 2


Que tipo de datos están disponibles en un BSON de MongoDB

A. Float

B. BigInteger

C. Char

D. Ninguno de los anteriores

El único tipo en MongoDB que refiere a texto, es el Char. En el caso de numéricos decimales, podemos optar por el Double o el Deciaml128, pero no Float, mientras que en el caso de enteros, este pueden ser de 32 o 64 bits, pero su nombre no tiene que ver con el tamaño, sino con el número de bits de los que disponen.

Pregunta 3


Cuales de los siguientes tipos son validos para una lista en un BSON de MongoDB?

A. LinkedList

B. ArrayList

C. Array

D. Vector

Aquí se nos invita a confundirnos con conceptos propios de otro lenguaje. Aunque los cuatro tipos son validos en Java, no lo son en MongoDB. La respuesta correcta es C, siempre podéis comprobarlo como se explicó en la sección de la secuencia en esta sección

Conclusión

En esta artículo se han revisado los diferentes tipos de campos y como obtenerlos a través de la herramienta Compass. Las preguntas que podemos encontrar en esta sección suelen ser puntos fáciles, siempre que se conozca muy bien la lista de tipos de campos. Se pueden producir confusiones, al ofrecer tipos que existen en otros lenguajes, por ejemplo Java, pero que no tienen un equivalente con el mismo nombre o función en MongoDB.

La sección sobre conocimientos del modelo de documentos, está reflejada en este artículo y en "Dados tres documentos que tienen forma diferente, identificar cuales pueden coexistir en la misma colección". Puedes clicar directamente en el artículo para acceder a él o aquí para volver a la página principal del curso.