2. Bases de datos NoSQL

2.5. Insertar documentos

Como tenemos la colección chr1 vacía vamos a insertar documentos:

Vamos a insertar el siguiente documento con información del gen uc001aaa.3, localizado en el cromosoma 1:

{ "name": "uc001aaa.3", "chrom": "chr1", "strand": "+", "txStart": 
11873, "txEnd": 14409, "cdsStart": 11873, "cdsEnd": 11873, 
"exonCount": 3, "exonStarts": "11873,12612,13220,", "exonEnds": 
"12227,12721,14409,", "proteinID": "", "alignID": "uc001aaa.3"}

Para insertar este documento en la colección chr1 utilizaremos la instrucción db.chr1.insert(); donde se indica con db la base de datos a la que estamos conectados, db.chr1… , la colección donde insertamos el nuevo documento, la colección chr1, y la función insert() que espera como parámetro el documento que vamos a insertar:

db.chr1.insert({ "name": "uc001aaa.3", "chrom": "chr1", "strand": "+", 
"txStart": 11873, "txEnd": 14409, "cdsStart": 11873, "cdsEnd": 11873, 
"exonCount": 3, "exonStarts": "11873,12612,13220,", "exonEnds": 
"12227,12721,14409,", "proteinID": "", "alignID": "uc001aaa.3"});

Si la inserción se ha realizado correctamente el sistema nos muestra el siguiente mensaje:

WriteResult({ "nInserted" : 1 })

Ahora vamos a insertar dos documentos más. Los documentos JSON con información sobre los genes uc010nxr.1 y uc009vit.3, también localizados en el cromosoma 1.

db.chr1.insert({ "name": "uc010nxr.1", "chrom": "chr1", "strand": "+", 
"txStart": 11873, "txEnd": 14409, "cdsStart": 11873, "cdsEnd": 11873, 
"exonCount": 3, "exonStarts": "11873,12645,13220,", "exonEnds": 
"12227,12697,14409,", "proteinID": "", "alignID": "uc010nxr.1"});


db.chr1.insert({ "name": "uc009vit.3", "chrom": "chr1", "strand": "-", 
"txStart": 14361, "txEnd": 19759, "cdsStart": 14361, "cdsEnd": 14361, 
"exonCount": 9, "exonStarts": "14361,14969,15795,16606,16857,17232,17914,18267,18912,", 
"exonEnds": 
"14829,15038,15947,16765,17055,17742,18061,18366,19759,", 
"proteinID": "", "alignID": "uc009vit.3"});

Ahora vamos a eliminar toda la colección chr1 de documentos con la instrucción db.chr1.drop();

Y la volvemos a crear:

db.createCollection("chr1");

para insertar los tres documentos a la vez con la instrucción insertMany();

Figura 78. Eliminar una colección de documentos.
Fuente: elaboración propia.

En la parte de ficheros JSON vimos que muchas veces encontramos un fichero con una colección de documentos que están todos en un array.

Los tres documentos con la información de los genes de los ejemplos anteriores los tenemos ahora dentro de un array:

[{ "name": "uc001aaa.3", "chrom": "chr1", "strand": "+", "txStart": 
11873, "txEnd": 14409, "cdsStart": 11873, "cdsEnd": 11873, 
"exonCount": 3, "exonStarts": "11873,12612,13220,", "exonEnds": 
"12227,12721,14409,", "proteinID": "", "alignID": "uc001aaa.3"}, 
{"name": "uc010nxr.1", "chrom": "chr1", "strand": "+", "txStart": 
11873, "txEnd": 14409, "cdsStart": 11873, "cdsEnd": 11873, 
"exonCount": 3, "exonStarts": "11873,12645,13220,", "exonEnds": 
"12227,12697,14409,", "proteinID": "", "alignID": "uc010nxr.1"}, 
{"name": "uc009vit.3", "chrom": "chr1", "strand": "-", "txStart": 
14361, "txEnd": 19759, "cdsStart": 14361, "cdsEnd": 14361, 
"exonCount": 9, "exonStarts": 
"14361,14969,15795,16606,16857,17232,17914,18267,18912,", 
"exonEnds": "14829,15038,15947,16765,17055,17742,18061,18366,19759,", 
"proteinID": "", "alignID": "uc009vit.3"}]

Y los vamos a inserir en la colección chr1 con la instrucción insertMany();

db.chr1.insertMany([{ "name": "uc001aaa.3", "chrom": "chr1",
"strand": "+", "txStart": 11873, "txEnd": 14409, "cdsStart": 11873,
"cdsEnd": 11873, "exonCount": 3, "exonStarts": "11873,12612,13220,", 
"exonEnds": "12227,12721,14409,", "proteinID": "", "alignID": 
"uc001aaa.3"}, {"name": "uc010nxr.1", "chrom": "chr1", "strand": "+", 
"txStart": 11873, "txEnd": 14409, "cdsStart": 11873, "cdsEnd": 11873, 
"exonCount": 3, "exonStarts": "11873,12645,13220,", "exonEnds": 
"12227,12697,14409,", "proteinID": "", "alignID": "uc010nxr.1"}, 
{"name": "uc009vit.3", "chrom": "chr1", "strand": "-", "txStart": 
14361, "txEnd": 19759, "cdsStart": 14361, "cdsEnd": 14361, 
"exonCount": 9, "exonStarts": 
"14361,14969,15795,16606,16857,17232,17914,18267,18912,", 
"exonEnds": 
"14829,15038,15947,16765,17055,17742,18061,18366,19759,", 
"proteinID": "", "alignID": "uc009vit.3"}]);

Ya tenemos otra vez los tres documentos en la colección chr1 de la base de datos uoc, y vamos a ver algunas instrucciones básicas para gestionar la información con MongoDB.