Introducción a MongoDB

Como ya hemos comentado MongoDB, es una base de datos no relacional, que almacena documentos JSON (JavaScript Object Notation).

JSon

JSon, se puede definir como un estándar para definir objetos en forma de texto plano. En la página web  http://www.json.org/ hay una explicación bastante buena. Los objetos van ente paréntesis y pueden contener dentro, clave-valor, arrays y otros objetos. Tienen esta pinta:

{a:1, b:2, c: 3} → Un objeto con tres propiedades a b y c y cada propiedad con su valor asociado.

{a:1, b:2, c:[1,2,3,4,5]} → Similar al anterior, solo que la propiedad c contiene un array

{a:1, b:{}, c: [ { a:1, b:2}, 5, 6]} → En este caso la propiedad b contiene un objeto vacío, y la propiedad c, contiene un array con tres elementos. El primer elemento del array es un objeto, el segundo un 5 y el tercero un 6.

{ } → Se corresponde con un objeto sin propiedades.

Los documentos en mongo tienen cierta estructura jerárquica, y están más cerca del uso real que le damos a los datos que el modelo relacional. Mongo es schemaless, algo así como “sin esquema”, es decir, que a diferencia del modelo relacional donde todos los elementos de una tabla tienen las mismas columnas, en mongo no lodos los objetos de una colección tienen que tener las mismas propiedades Por ejemplo:

Colección con varios tipos de esquema

Colección con varios tipos de esquema (pinchar para agrandar)

Como se puede ver, obtenemos lo que tiene la colección “cosas”. Vemos que tiene 4 objetos, todos los objetos tienen la propiedad “a”, los dos primeros tienen propiedades “b y c” y el último objeto, tiene una propiedad “dirección” con una serie de propiedades más.

En el diseño relacional, se definen varias tablas que definen el modelo. Por ejemplo, para definir un blog, en el modelo relacional creamos tres tablas, autor, artículo, comentarios, etiquetas y otras tablas para definir las relaciones articulo_comentario, articulo_etiqueta.

Bien, con la estructura jerárquica que nos da mongo, lo normal es hacer todo esto en una única colección:

{ articulo: “bla, bla…”, titulo: “bla bla…”,  autor: “Fulano…”,

  comentarios: [{nombre:”Mengano”, coment: “bla, bla..”}, {…}]

  etiquetas[“deporte”,”pasatiempos” ]}

Bien, es evidente, que en el diseño anterior habrá información repetida en varios sitios, (como etiquetas, etc…) pero eso en principio no es importante. El límite para embeber información en una colección, es que no se supere los 16Mb, en tal caso, hay que insertar una referencia al objeto en otra colección.

Hay que tener en cuenta en lo relativo a embeber o no la información, si dicha información es consultada con el resto. Por ejemplo, en el caso de las etiquetas, siempre que consultemos un artículo, recuperaremos las etiquetas asociadas.

CRUD en MongoDB

Crud es el acrónimo de “create”, “read”, “update” y “delete”, que son las operaciones básicas que se realizan en cualquier aplicación:

Crud

Crud

Mongo-db no dispone de un lenguaje de consultas como sql. En lugar de esto dispone de una serie de métodos que permiten realizar cada una de estas operaciones.

El shell mongo

El shell mongo es un interprete javascript interactivo. Si tenemos instalado mongo, desde un terminar tecleamos la sentencia “mongo”:

Como se puede ver, aparece la versión de mongo que estamos usando y la base de datos a la que nos estamos conectando. Podemos obtener ayuda escribiendo “help”:

BSon

Los datos se representan internamente en un formato llamado BSon, binary json. BSon es la forma serializada de manejar documentos JSon y permite la representación de tipos de datos que no forman parte de JSon, como por ejemplo los Date. 

findOne()

Sin argumentos devuelve un elemento aleatorio de la colección. Es útil para conocer el esquema de los objetos contenidos en una colección. En las consultas a no ser que se especifique lo contrario, siempre nos devolverá el id.

Los argumentos funcionan del siguiento modo:

db.personas.findOne( <> , <<SELECCIÓN>>)

 <> → Es similar a la clausula where en una sentencia select de sql. Recibe un documento.

<<SELECCIÓN>> → Es similar a la clausula select en una sentencia de sql. Recibe un documento.

Veamos un ejemplo:

En el criterio de selección, se indica los que queremos que salgan con true ó 1, y los que no, con false ó 0, por lo tanto, en el ejemplo anterior, se muestra únicamente el nombre.

Aquí dejamos este artículo, en el siguiente artículo hablaremos sobre las Instalar y desinstalar mongoDB

Deja un comentario

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