Uno de los principios de MongoDB es que dentro de un documento podemos contener otros documentos (conocidos como subdocumentos). De esta forma podemos realizar técnicas de modelado de datos en MongoDB.
En este caso vamos a crear un documento que represente los datos de una ciudad, el cual contendrá, a su vez, un subdocumento con los datos de ubicación de dicha ciudad. El documento resultante será algo del siguiente estilo:
{
"_id": ObjectId("569c389705d1b33ed481989c"),
"nombre": "Avila",
"habitantes": 58358,
"ubicacion": {
"altitud": 1131,
"latitud": 40.654347222222,
"longitud": -4.6962222222222
}
}
Lo primero que haremos para poder insertar subdocumento en MongoDB será conectarnos a la base de datos:
conn = new Mongo();
db = conn.getDB("demografia")
Ahora vamos a crear el documento. El documento lo creamos en Javascript mediante un Object()
, ya que los objetos en Javascript se identifican con documentos JSON, justo lo que espera MongoDB.
var ciudad = new Object();
ciudad.nombre = "Avila";
ciudad.habitantes = 58358 ;
A su vez el subdocumento con la ubicación será un Object()
.
var geo = new Object();
geo.altitud = 1131;
geo.latitud = 40.654347222222;
geo.longitud = -4.6962222222222;
En este caso hemos guardado la latitud y longitud en dos campos, si bien lo más recomendado en MongoDB será guardarlo en un array de dos valores. Ya veremos en otros ejemplos de Línea de Código el porqué.
Lo siguiente será crear la propiedad geo en el primero documento a la cual asignaremos este nuevo objeto que representa al subdocumento.
ciudad.geo = geo;
Solo nos quedará insertar el documento con su subdocumento. Para ello utilizamos el método .insert()
sobre la colección de ciudades.
x = db.ciudades.insert(ciudad);
print ('El número de documentos insertado es de '+ x['nInserted']);
Y así ya habremos conseguido insertar subdocumento en MongoDB.