You are on page 1of 29

Tabla de Contenido

Agradecimientos....................................................................................................................3
Acerca del autor.....................................................................................................................4
Lo que debes saber...............................................................................................................5
Captulo 1: Introduccin a No!L........................................................................................."
1.1. #!u$ es No!L%......................................................................................................."
1.&. #!u$ N' es No!L%.................................................................................................(
1.3. )ipos de bases de datos No!L................................................................................(
1.3.1. *ases de datos orientadas a documentos..........................................................+
1.3.&. *ases de datos orientadas a cla,e-,alor.............................................................
1.3.3. *ases de datos orientadas a gra/os.....................................................................
1.4. istema de gestin de bases de datos 01*23.......................................................14
1.5. Lista de 1*2 No!L.............................................................................................14
1.". #5or qu$ usar No!L%............................................................................................1&
Captulo &: Conociendo 6ongo2*......................................................................................14
&.1. 6ongo2*..................................................................................................................14
&.&. )$rminos b7sicos entorno a 6ongo2*....................................................................14
&.&.1. 8'N 9 8a,acript 'b:ect Notation...................................................................14
&.&.&. 2ocumento........................................................................................................15
&.&.3. Coleccin...........................................................................................................15
&.3. Instalando 6ongo2*................................................................................................15
&.3.1. Instalacin en Linu; desde la /uente.................................................................15
&.3.&. Instalacin en Linu; desde los repositorios......................................................1"
&.3.&.1. Instalacin en <edora Linu;= >ed ?at Linu; @nterprise A otras
distribuciones..........................................................................................................1"
&.3.3. Instalacin en 6ac ' B..............................................................................1(
&.4. La consola interacti,a de 6ongo2*.........................................................................1+
&.4.1. AAuda en la consola interacti,a.........................................................................1.
&.5. Conectando a una base de datos.............................................................................1.
&.5.1. eleccionando la base de datos.......................................................................1.
&.". Nuestro primer documento.......................................................................................&4
3. C>C2 en 6ongo2*.........................................................................................................&1
3.1. #!u$ es C>C2%.......................................................................................................&1
3.&. Create.......................................................................................................................&&
3.&.1. insert03...............................................................................................................&&
3.&.&. .sa,e03................................................................................................................&3
3.3. >ead.........................................................................................................................&3
3.3.1. /ind03...................................................................................................................&4
3.3.&. /ind'ne03............................................................................................................&5
3.4. Cpdate......................................................................................................................&"
3.4.1. update03.............................................................................................................&"
3.5. 2elete........................................................................................................................&"
3.5.1. remo,e03............................................................................................................&(
3.5.&. drop03.................................................................................................................&(
Lo que queda pendiente......................................................................................................&.
Aportes.................................................................................................................................&.
Agradecimientos
A mis padres= mi Dermano A mi no,ia por todo lo que me Dan podido brindar en mi
desarrollo pro/esional A personal.
Acerca del autor
6i nombre es Yohan D. Graterol= soA un programador A acti,ista pro9<'
0<ree and 'pen ource o/tEare3= me interesa mucDo lle,ar temas interesantes A
no,edosos al pFblico Dispanoparlante= A De dictado con/erencias en ,arios pases
de Latinoam$rica sobre: programacin= bases de datos no relacionales=
computacin en la nube= A otros temas relacionados con so/tEare libre. oA
miembro del proAecto <edora= A estoA en constante /ormacin sobre las Fltimas
tecnologas que las grandes comunidades de so/tEare libre nos brindan.
6i correo de contacto es AograterolG/edorapro:ect.org A mi cuenta de )Eitter
es GAograterol.
Lo que debes saber
Antes de entrar al mundo de no!L debes conocer conceptos como: Qu
es una base de datos?, Para que sirven?, !uales son las a"licaciones
#undamentales en el mundo real?, saber sobre bases de datos relacionales es
opcional= Aa que cambia el paradigma en el tratamiento de la in/ormacin.
@ste libro estar7 con/ormado por ,arios tomos que tratar7n de abarcar todos
los puntos importantes en consultas, administraci$n escalamiento de una
base de datos documental. @ste primer tomo est7 en/ocado 144H a la parte b7sica
del motor de bases de datos 6ongo2*.
!a"%tulo &' (ntroducci$n a )o*QL
&.&. Qu es )o*QL?
No!L o INo solamente !LI 0Not 'nlA !L3 es un t$rmino acuJado por
Carlo troKKi en 1..+ A nue,amente retomado por @ric @,ans en &44. A se re/iere
a un con:unto de bases de datos que se di/erencian en gran parte de las bases de
datos con,encionales= en caractersticas tanto de uso como de implementacinL
estos tipos de bases de datos no usan !L o al menos no como lengua:e
predeterminado para realiKar las consultas. Las bases de datos No!L= no
soportan totalmente ACI2= esto lo e;plica el teorema del pro/esor @ric *reEer=
)eorema CA5 0&4443= donde menciona:
@s imposible para un sistema distribuido garantiKar simult7neamente las
siguientes tres caractersticas:
!onsistenc +!onsistencia,' todos los nodos ,en la misma data al mismo tiempo.
Availabilit +Dis"onibilidad,' una garanta de que todos los requerimientos
recibir7n una respuesta de que el requerimiento /ue e;itoso o /allido.
Partition -olerance +-olerancia a la Partici$n,' el sistema continFa operando a
pesar de la p$rdida arbitraria de mensa:es= o la /alla de parte del sistema.
@n primera instancia es una des,enta:a= pero gracias a esto permite que los
motores de bases de datos no relacionales escalen /7cilmente de manera
DoriKontal. 5ara subsanar el problema de ACI2= nue,amente el pro/esor *reEer
ide *A@ 0*asicallA A,ailable= o/t9state= @,entuallA consistent3 que lo con/orman
los siguientes puntos:
Dis"onibilidad b.sica' para cada solicitud se garantiKa una respuesta=
satis/actoria o /alla de e:ecucin.
/stado 0*o#t0' @l estado del sistema puede cambiar con el tiempo= a ,eces
sin cualquier entrada.
!onsistencia /ventual' La base de datos puede ser en un momento
inconsistente pero ser7 consistente con el tiempo.
@l lengua:e !L no es un lengua:e predominante entre los distintos tipos de
bases de datos no relacionales= por lo general cada motor tiene su propio lengua:e
de consultas. Cabe destacar que la in/ormacin no se almacena con un esquema
/i:o 0pero si usando almacenamiento estructurado3= aun que si e;iste un esquema
que el 2*A o el desarrollador propone con anterioridad de manera ,irtual= es decir=
no se crea en el motor antes de utiliKar la base de datos sino al almacenar el
primer ,alor.
&.1. Qu )2 es )o*QL?
@l t$rmino No!L no es una base de datos A tampoco un tipo de base de
datos= sino una de/inicin que engloba un con:unto de tipos de bases de datos que
di/iere con las bases de datos con,encionales.
&.3. -i"os de bases de datos )o*QL
@n el mundo de las bases de datos no relacionales nos encontramos con
distintos modelos o tipos= que se desempeJan me:or en algunos ambientes
espec/icosL esas distintas /acetas no se ,en en las base de datos relacionales. @n
este libro se e;pondr7n los tipos m7s comunes.
&.3.&. 4ases de datos orientadas a documentos
Las bases de datos orientadas a documentos o tambi$n denominadas como
*ases de datos documental= traba:an ba:o el marco de la de/inicin de un
I2ocumentoI= donde cada motor que usa esta de/inicin di/iere en los detalles=
pero la maAora concuerda en como se almacena la in/ormacin con algFn /ormato
est7ndar. Los /ormatos m7s utiliKados por los motores m7s populares son: 8'N A
*'N. e podra considerar este tipo como el m7s utiliKada en la actualidad.
Cada documento= es muA similar a un registro en una base de datos
relacional= donde se puede obser,ar un esquema parecido mas no rgido. 2os
documentos no tienen porque tener un esquema igual= aunque sean de una misma
coleccin de datos.
{
_id : 1 ,
nombre : "MongoDB" ,
u r l : " h t t p : / /www. mongodb . o r g " ,
t i p o : " Documental "
}
Eemplo de un documento en !ormato "#$%.
@ste e:emplo demuestra la sencilleK de un documento= se obser,a un
modelo al estilo clave ' valor. Cna analoga con las bases de datos relacionales
sera: Cla,e M Campo A Nalor M 2ato del campo= Dasta all queda la analoga.
&.3.1. 4ases de datos orientadas a clave5valor
@ste tipo de bases de datos es muA similar a las bases de datos documental
en el concepto de guardar la in/ormacin con el modelo cla,e:,alor= la di/erencia
radica en que un documento se almacena en una cla,eL esta de/inicin puede
parecer algo abstracta. @sto se e;plica me:or con un e:emplo. @l siguiente e:emplo
utiliKa el documento de la seccin anterior:
mongodb &' {
_id : 1 ,
nombre : "MongoDB" ,
u r l : " h t t p : / /www. mongodb . o r g " ,
t i p o : " Documental "
}
La cla,e en este caso es OmongodbO A su contenido es el mismo documento
de la seccin anterior. @sto Dace que ,are la /orma de recuperar la in/ormacin
con respecto a las bases de datos basadas en documentos. Algun muA interesante
de este tipo es que permite ser utiliKado :unto bases de datos orientadas a
documentos= lo que origina motores Dbridos.
&.3.3. 4ases de datos orientadas a gra#os
Eemplo de un gra(o de relacione) de conocido).
@ste tipo di/iere completamente a los tipos antes mencionados= A trata la
in/ormacin de una manera peculiar usando gra/os A teora de gra/os. Cada nodo
solo debe contener una sola columna= por lo tanto se debe normaliKar
completamente las bases de datos. P como la de/inicin de gra/os indica= las
relaciones solo pueden ser binarias= es decir= un nodo puede solo usar una relacin
para entrar en contacto con otro nodo A no m7s de uno.
Las ,enta:as de este tipo de bases de datos ,an en/ocadas a la integridad de
los datos= cualquier cambio en un nodo o relacin solo a/ecta localmente.
&.6. *istema de gesti$n de bases de datos +*G4D,
8orge 7ncDeK Asen:o 0&4453 de/ine 1*24 como:
Cn sistema gestor de bases de datos o 1*2 es el so/tEare que permite a los
usuarios procesar= describir= administrar A recuperar los datos almacenados en
una base de datos.
Cn tipo de base de datos no sir,e de nada sino tiene un sistema que lo
gestione= a menos que desees crear un 1*2. @n No!L DaA una basta gama de
1*2= A la maAora est7n ba:o licencia de cdigo libre= permitiendo as usar=
estudiar= modi/icar A redistribuir sin problema alguno con respecto a algunos
motores de bases de datos relacionales con licencias pri,ati,as.
&.7. Lista de *G4D )o*QL
*ases de datos documental
6ongo2*
LanKamiento: &44+
Licencia: 1NC A15L ,3.4
CoucD2*
LanKamiento: &445
Licencia: ApacDe License &.4
>a,en 2*
LanKamiento: &414
Licencia: 1NC A15L ,3.4
*ases de datos cla,e-,alor
ApacDe Cassandra
LanKamiento: &44+
Licencia: ApacDe License &.4
>iaQ
LanKamiento: &44.
Licencia: ApacDe License &.4
>edis
LanKamiento: &44.
Licencia: *2
*ases de datos en gra/os
Neo4:
LanKamiento: &44.
Licencia: 1NC A15L ,3.4
2e;
LanKamiento: &44+
Licencia: Comercial
ones 1rapD2*
LanKamiento: &41&
Licencia: 1NC A15L ,3.4 A comercial
&.8. Por qu usar )o*QL?
@n esta $poca donde se generan cantidades enormes de datos menos
estructurados= las bases de datos relacionales empieKan a mostrar de/iciencias= en
almacenamiento u operacionesL siendo esta una de las principales raKones de
impulsar el uso de bases de datos no relacionales. 6ucDas personas se que:an del
mo,imiento No!L= m7s que todo por una resistencia al cambio= que por los
contras de este tipo de bases de datosL en la actualidad gestionar una cantidad de
datos gigantesca no es tan sencillo si piensas en estructuras. 'tra de las raKones
rele,antes es la arquitectura= que permite escalar DoriKontalmente de manera
sencilla sin tantos problemas de rendimiento.
La ,elocidad de desarrollo A la ,elocidad de la base de datos son puntos a
/a,or para las bases de datos no relacionales= reduciendo el tiempo de desarrollo
e,itando comple:as sentencias !L A adem7s aumentando la ,elocidad de
respuestas para los clientes.
!a"%tulo 1' !onociendo 9ongoD4
1.&. 9ongoD4
6ongo2* es un sistema de bases de datos no relacionales= multiplata/orma
e inspirada en el tipo de bases de datos documental A cla,e-,alor= su nombre
pro,iene del t$rmino en ingl$s IDumongousI. @st7 liberada ba:o licencia de
so/tEare libre= espec/icamente 1NC A15L 3.4 . 6ongo2* usa el /ormato *'N
08'N Compilado3 para guardar la in/ormacin= dando la libertad de mane:ar un
esquema libre. @ste motor de bases de datos es uno de los m7s conocidos A
usados= pudi$ndolo comparar en popularidad con 6A!L en el caso de las bases
de datos relacionales.
@l desarrollo de 6ongo2* comenK en el aJo &44( por la empresa 14gen3 =
publicando una ,ersin /inal en el &44.. 5ara la /ecDa que es escrito este libro=
6ongo2* se encuentra en la ,ersin &.".1.
1.1. -rminos b.sicos entorno a 9ongoD4
1.1.&. :*2) ; :ava*cri"t 2b<ect )otation
8'N es /ormato compacto de representacion de ob:etos. Las
especi/icaciones las public 2ouglas CrocQ/ord en el documento ><C 4"&(4.
8'N es un /ormato independiente del lengua:e= aunque su uso e;tendido Dasta
Dace poco era en el lengua:e 8a,ascipt. Actualmente se usa 8'N en gran
cantidades de sistemas para intercambiar in/ormacion por su simplicidad en
comparacin con B6L.
@ste /ormato soporta gran cantidad de tipos de datos= lo que lo Dace atraci,o
para un uso generaliKado= A cada ,eK m7s lengua:es de programacin dan soporte
a este /ormato. @l e:emplo del captulo anterior= donde se mostraba un
IdocumentoI= no es m7s que 8'N.
1.1.1. Documento
Cn documento es un con:unto de datos estructurados 0mas no con un
esquema estricto3= que contiene pares cla,e-,alor= A se usa *'N 08'N *inario3
como /ormato para almacenar los documentos. Cn documento puede ser
comparado con una /ila o registro en una base de datos relacional.
1.1.3. !olecci$n
@s un con:unto de documentos= similar a una tabla en las bases de datos
relacionales.
1.3. (nstalando 9ongoD4
1.3.&. (nstalaci$n en Linu= desde la #uente
@;isten distintas /ormas de instalar 6ongo2* en Linu;= una de ellas= A la
menos recomendable es compilar el cdigo /uente que pueden descargar desde:
Dttp:--EEE.mongodb.org-doEnloads. )ambi$n se puede descargar los binarios=
descomprimirlos A usarlos.
1.3.1. (nstalaci$n en Linu= desde los re"ositorios
Los sistemas Linu; a di/erencia de otros '= mane:o sus so/tEare en
repositorios= que no es m7s que un sitio centraliKado donde se almacenan todos
los so/tEare disponible para una distribucin de Linu;.
2.3.2.1. Instalacin en Fedora Linux, Red Hat Linux Enterprise y otras
distribuciones.
(nstalaci$n en >edora 5 ?ed @at Linu= /nter"rise 5 !ent2*
5ara instalar 6ongo2* en alguna de estras distribuciones= se debe Dacer
uso del gestor de paquetes *um A e:ecutar el siguiente comando:
*um in)tall mongodb+)er,er mongodb
2onde cada componente es ,ital segFn lo que se quiera Dacer con
6ongo2*= a continuacin se muestra todas las Derramientas segun el paquete
seleccionado.
mongodb' Contiene todos los paquetes RclienteS= como es el caso del cliente
mongo= la Derramienta para respaldos en binarios de bases de datos
mongodump= mongorestore para recuperar respaldos en binario=
mongoe;port A mongoimport que realiKan una accin similar a mongodump A
mongorestore= pero usan /ormato 8'N o CN.
mongodb;server ' Contiene todos los paquetes para Dacer /uncionar el
ser,idor= como el demonio mongod.
Los componentes mongodb A mongodb+)er,er se pueden instalar
independientemente. !u.ndo hacer eso? Cn caso muA representati,o es
cuando se desea colocar en produccin la base de datos. e recomienda solo
instalar los paquetes de ser,icio mongodb+)er,er A el cliente en otro ser,idor.
5ara iniciar-reiniciar o apagar el demonio de 6ongo2* en >edora se utiliKa
el siguiente comando:
)*)temct l )tart - r e)tart - )top mongod.)er,ice
@n el caso de ?ed @at /nter"rise Linu= 8 o deri,ados:
)er,ice mongod )tart - re)tart - )top
5ara acti,ar el inicio de 6ongo2* en el arranque del sistema debe e:ecutar segFn
sea el caso lo siguiente:
Fedora: )*)temctl enable mongod.)er,ice
Red Hat Enterprise Linux 6 o deriados: ch.con(ig mongod on
Instalacin en !ebian
@n el caso de 2ebian= en un solo paquete se encuentra la distribucin
completa de 6ongo2* A para instalarlo se utiliKa el gestor de paquetes apt+get:
apt+get in)tall mongodb
2.3.3. Instalacin en "ac #$ %
(nstalaci$n 9anual
5uede descargar la Fltima ,ersin disponible de 6ongo2* para 6ac ' B
usando cC>L= descomprimirlo A colocarlo en una carpeta a con,eniencia.
curl +$ http://download).mongodb.org/mongodb+o)/+/01_12+
333.tg4
iendo BBB= la ,ersin disponible. ADora= se descomprime el arcDi,o usando
la Derramienta tar.
tar +4/,( mongodb+o)/+/01_12+333.tg4
Con todos los arcDi,os de 6ongo2* en su 6ac ' B= solo debe ingresar a
la carpeta resultante A e:ecutar el demonio mongod.
Asando @omebreB
brew update
brew in)tall mongodb
1.6. La consola interactiva de 9ongoD4
Pa con la pre,ia instalacin de 6ongo2* A sus Derramientas= podemos
acceder a su consola interacti,a A realiKar nuestras primeras interacciones con
6ongo2*.
Al iniciar la consola se conecta autom7ticamente a la base de datos ItestI= A
a partir de all podemos realiKar consultas sobre esa base de datos. La consola es
importante para administrar 6ongo2*= puede parecer desa/iante para los que no
est7n acostumbrado a usar Derramientas en consola= pero la gente de 14gen
pens en eso A agreg comandos /7ciles de recordar.
1.6.&. Auda en la consola interactiva
5ara acceder a la aAuda de 6ongo2* en la consola= se utiliKa el comando
help A nos muestra el contenido b7sico de la aAuda.
1.7. !onectando a una base de datos
La cone;in a bases de datos desde la consola o a tra,$s de algFn lengua:e
es muA sencilloL aFn as en 6ongo2* N' se crean las bases de datos antes de
usarla. @n bases de datos relacionales= se debe crear toda una estructura inicial
para poder almacenar in/ormacin= al menos se debe tener una base de datos con
una tabla= eso en 6ongo2* no se Dace. 5ara crear una base de datos se debe
seleccionar= luego almacenar un documento creando una coleccin de
documentos.
1.7.&. *eleccionando la base de datos
Antes de seleccionar una base de datos= uno tiene la opcin de ,er el listado
de bases de datos que e;isten en el sistema= con el comando )how db)L la salida
de este comando nos muestra el nombre A el tamaJo de la base de datos= es
importante mencionar que 6ongo2* al crear el primer documento reser,a espacio
en disco= como mnimo &44 mb.
Luego de saber la lista de bases de datos e;istente= se debe seleccionar una
0no es obligatorio que est$ en la lista3= para seleccionar la base de datos se Dace
uso del comando u)e ba)ededato)= A Aa podemos traba:ar con la base de datos
e;istente u operar para crear una nue,a.
1.8. )uestro "rimer documento
Lleg la Dora de crear una base de datos A una coleccin= A eso se Dar7
almacenando un documento usando el ob:eto db= pre,ia e:ecucin del comando
use. Cn documento puede tener en teora un m7;imo de Dasta &894 de
in/ormacin.
Apro,ecDando el e:emplo del primer captulo= para por /in almacenarlo en
6ongo2* A consultarlo. Cna de las cosas que DaA que tener en cuenta usando la
consola interacti,a= es usar ,ariables para crear o modi/icar documentos= de esta
manera podemos e,itar accidentes con una mala manipulacin directa de la base
de datos.
5ara almacenar un documento debemos e:ecutar el m$todo .in)ert56 del
ob:eto db= especi/icando el nombre de la coleccin 0la coleccin se crea de manera
din7mica como la base de datos3. @:emplo:
' documento & {
_id : 1 ,
nombre : "MongoDB" ,
url: " http://www.mongodb.org",
tipo: "Documental"
}
' db.nue,a_coleccion.in)ert5documento6
2e esta manera tenemos nuestra primera coleccin A nuestro primer
documento= para con/irmar esto= podemos e:ecutar tanto el comando )how
collection) como el m$todo .(ind56.
' )how collection)
nue,a_coleccion
)*)tem.inde/e)
)*)tem.inde/e) es una coleccin que usa 6ongo2* para almacenar los
ndices de la coleccin. 5or de/ecto Tid es un ndice.
' db.nue,a_coleccion.(ind5 6
{
"_id" : 1 ,
"nombre" : "MongoDB" ,
"url": "http://www. mongodb.org" ,
"tipo" : "Documental"
}
Con .(ind56 se puede comprobar que e/ecti,amente se almacen el
documento en la coleccin nue,a_colecci7n.
3. !?AD en 9ongoD4
3.&. Qu es !?AD?
@l propsito de las bases de datos no es solo almacenar in/ormacin= sino
manipular esa in/ormacin de distintas maneras con el ob:eti,o de alimentar un
con:unto de procesos pre,iamente establecidos en los sistemas in/orm7ticos.
@n los sistemas de base de datos e;isten 4 /unciones b7sicas las cuales
son: Crear= Leer= 6odi/icar A @liminar 0Create= >ead= Cpdate and 2elete 9 C>C23=
de estas 4 /unciones b7sicas deri,an todo un sin /in de /unciones para el
tratamiento de la in/ormacin.
6ongo2* pro,ee un grupo de m$todos en 8a,acript para realiKar C>C2 en
nuestras bases de datos a tra,$s de la consola A los dri,ers de los distintos
lengua:es de programacin.
3.1. !reate
Crear es la primera de las 4 /unciones elementales a la Dora de utiliKar bases
de datos= nos permite insertar unidades de in/ormacin el caso de 6ongo2* a
tra,$s de documentos en colecciones de datos. 5ara poder crear un documento
6ongo2* posee el m$todo .in)ert56= .)a,e56 A en de una manera especial
.update56.
3.1.&. insert+,
@ste m$todo agrega un documento o un arreglo de documentos en una
coleccin. u uso es muA sencillo A da la posibilidad de agregar un documento con
o sin campo Tid.
Eemplo de in)erci7n de un documento
Eemplo de in)erci7n de ,ario) documento) en una colecci7n
3.1.1. .save+,
)iene todas las /unciones de .insert03= pero ademas permite actualiKar un
documento si Aa e;iste el Tid de dicDo documento= en ese caso .insert03 mostrara
una e;cepcin.
3.3. ?ead
Leer es nuestra segunda /uncin elemental en los sistemas de base de
datos= A 6ongo2* utiliKa dos m$todos para la lectura de los documentos= el primer
m$todo es .(ind56 que nos permite leer todos los documentos de una coleccin A
.(ind$ne56 que nos permite leer solo uno.
3.3.&. #ind+,
elecciona documentos en una coleccin A de,uel,e un cursor con
documentos. @l siguiente e:emplo muestra los documentos de nuestra coleccin
libro.
@l resultado que nos arro:a no es muA /7cil de leer= Aa que no tiene un
/ormato de salida tan claro= pero DaA /orma de que se muestre de la misma manera
que los na,egadores muestran el /ormato 8'N en las consolas de
desarrolladores= A eso se logra utiliKando el comando prett*56 luego del (ind56.
3.3.2. &ind#ne'(
Al igual que .(ind56= permite realiKar bFsquedas en una coleccin con la
di/erencia que solo de,uel,e un solo documento. i no se utiliKan par7metros en la
bFsqueda con .(ind$ne56= de,uel,e solo el primer documento agregado a la
coleccin o el primer documento en orden natural en el disco.
3.6. A"date
ActualiKar es otra de nuestras /unciones elementales= con ella podremos
modi/icar in/ormacin A en el caso de 6ongo2* se puede realiKar Dasta insercin
de documentos con el m$todo .update56, A ademas se puede utiliKar la /uncin
.)a,e56 antes ,ista= en actualiKaciones simples.
3.6.&. u"date+,
6odi/ica un documento o un con:unto de documentos. 5or de/ecto solo modi/ica un
documento= pero si la opcin multi est7 acti,ada realiKa la modi/icacin sobre todos
los documentos que cumplan con un criterio dado. Al igual que con ./ind03=
.update03 se puede utiliKar con par7metros o criterios de bFsquedas. .update03 se
utiliKa con la siguiente estructura:
db.collection.update 5
8con)ulta + criterio)',
8documento_modi(icado ',
{up)ert: true - (al)e, multi : true - (al)e }
6
La opcin up)ert= permite agregar un documento si no e;iste= siempre A
cuando esta opcin est$ acti,ada.
3.7. Delete
@liminar es nuestra Fltima /uncin= A 6ongo2* utiliKa la /uncin .remo,e56
para eliminar documentos A colecciones= en el caso de las colecciones por el tema
de rendimiento es me:or utiliKar .drop56.
3.7.&. remove+,
@limina uno o m7s documentos de una coleccin. >ecibe par7metros para
realiKar una eliminacin selecti,aL si no se le pasa ningFn par7metro elimina todos
los documentos de la coleccin.
)omando el Tid del documento que est7 en la salida del e:emplo del
apartado sobre .(ind$ne56= se proceder7 a borrar dicDo documento A consultado de
nue,o= se corroborar7 la eliminacin.
Nemos que la consulta es sencilla= Aa que directamente pasamos el
par7metro del documento que deseamos eliminar= si pasamos un par7metro que
coinciden en ,arios documentos= se eliminar7n todos los documentos con dicDas
coincidencias.
3.7.1. dro"+,
La /uncin .drop56 elimina toda una coleccin= A es la m7s recomendable a la
Dora de realiKar esta tarea= Aa que utiliKa menos recursos que .remo,e56.
Lo que queda "endiente
5ara el pr;imo tomo del libro quedan pendientes los siguientes temas:
Consultas a,anKadas con 6ongo2*= en bFsqueda= modi/icacin A
eliminacin de documentos.
Cone;in de 5AtDon A Node8 con 6ongo2* usando los dri,ers nati,os
para ambos lengua:es de programacin.
2eploA A administracin en entorno UNIB.
@scalamiento DoriKontal.
A"ortes
i deseas realiKar algFn aporte al libro= puedes en,iar un correo a
AograterolG/edorapro:ect.org= indicando sugerencias= errores A lo que te gustara
que se agregara en el tomo o en /uturos tomosL todas tus opiniones ser7n
bien,enidas.