2. Bases de dades NoSQL

2.5. Inserir documents

Com que tenim la col·lecció chr1 buida hi inserirem documents:

Inserirem el següent document amb informació del gen uc001aaa.3, localitzat 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"}

Per inserir aquest document a la col·lecció chr1 utilitzarem la instrucció db.chr1.insert(); on s’indica amb db la base de dades a la qual estem connectats, db.chr1... , la col·lecció on inserim el nou document, la col·lecció chr1, i la funció insert() que espera com a paràmetre el document que vam inserir:

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ó s’ha realitzat correctament el sistema ens mostra el missatge següent:

WriteResult({ "nInserted" : 1 })

Ara hi inserirem dos documents més. Els documents JSON amb informació sobre els gens uc010nxr.1 i uc009vit.3, també localitzats 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"});

Ara eliminarem tota la col·lecció chr1 de documents amb la instrucció db.chr1.drop();

I la tornem a crear:

db.createCollection("chr1");

per inserir els tres documents alhora amb la instrucció insertMany();

Figura 12. Eliminar una col·lecció de documents.
Font: elaboració pròpia.

A la part de fitxers JSON hem vist que moltes vegades trobem un fitxer amb una col·lecció de documents que estan tots en un array.

Els tres documents amb la informació dels gens dels exemples anteriors els tenim ara dins d’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"}]

I els inserirem en la col·lecció chr1 amb la instrucció 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"}]);

Ja tenim una altra vegada els tres documents a la col·lecció chr1 de la base de dades uoc, i veurem algunes instruccions bàsiques per gestionar la informació amb MongoDB.