Manipular Documentos en MongoDB

Avatar Tutor | octubre 24, 2018

MongoDB almacena los registros de datos como documentos BSON. BSON es una representación binaria de documentos JSON, aunque contiene más tipos de datos que JSON.

Insertar Documentos

Para insertar datos en la colección de MongoDB, debe usar el método insert() o save() de MongoDB.

Sintaxis

La sintaxis básica del comando insert() es la siguiente:

>db.COLLECTION_NAME.insert(documento)

Ejemplo

>db.mycol.insert({
   _id: ObjectId(7df78ad8902c),
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'tutorials point',
   url: 'http://www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
})

Aquí mycol es el nombre de nuestra colección, como se creó en el capítulo anterior. Si la colección no existe en la base de datos, MongoDB creará esta colección y luego insertará un documento en ella.

En el documento insertado, si no especificamos el parámetro _id, MongoDB asigna un ObjectId único para este documento.

_id es un número hexadecimal de 12 bytes único para cada documento en una colección.

Para insertar varios documentos en una sola consulta, puede pasar una serie de documentos en el comando insert().

>db.post.insert([
   {
      title: 'MongoDB Overview', 
      description: 'MongoDB is no sql database',
      by: 'tutorials point',
      url: 'http://www.tutorialspoint.com',
      tags: ['mongodb', 'database', 'NoSQL'],
      likes: 100
   },
	
   {
      title: 'NoSQL Database', 
      description: "NoSQL database doesn't have tables",
      by: 'tutorials point',
      url: 'http://www.tutorialspoint.com',
      tags: ['mongodb', 'database', 'NoSQL'],
      likes: 20, 
      comments: [	
         {
            user:'user1',
            message: 'My first comment',
            dateCreated: new Date(2013,11,10,2,35),
            like: 0 
         }
      ]
   }
])

Para insertar el documento, puede usar db.post.save(documento) también. Si no especifica _id en el documento, el método save() funcionará igual que el método insert(). Si especifica _id, reemplazará todos los datos del documento que contiene _id como se especifica en el método save().

Consultar Documentos

Para consultar datos de la colección de MongoDB, debe usar el método find() de MongoDB.

Sintaxis

La sintaxis básica del método find() es la siguiente:

>db.COLLECTION_NAME.find()

El método find() mostrará todos los documentos de forma no estructurada.

El método pretty()

Para mostrar los resultados de una manera formateada, puede usar el método pretty().

Sintaxis

>db.mycol.find().pretty()

Ejemplo

>db.mycol.find().pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "tutorials point",
   "url": "http://www.tutorialspoint.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

Aparte del método find(), existe el método findOne(), que devuelve solo un documento.

Actualizar y Modificar Documentos

Los métodos de update() y save() de MongoDB se utilizan para actualizar el documento en una colección. El método update() actualiza los valores en el documento existente, mientras que el método save() reemplaza el documento existente con el documento pasado en el método save().

El método update() actualiza los valores en el documento existente.

Sintaxis

La sintaxis básica del método update() es la siguiente:

>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

Ejemplo

Tenga en cuenta que la colección mycol tiene los siguientes datos.

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}

Ahora vamos a cambiar a ‘New MongoDB Tutorial’ dónde los titulos sean ‘MongoDB Overview’

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
>

Por defecto, MongoDB actualizará solo un documento. Para actualizar varios documentos, debe establecer un parámetro ‘multi’ en verdadero.

>db.mycol.update({'title':'MongoDB Overview'},
   {$set:{'title':'New MongoDB Tutorial'}},{multi:true})

Eliminar Documentos

El método remove() de MongoDB se utiliza para eliminar un documento de la colección. El método remove() acepta dos parámetros. Uno es el criterio de eliminación y el segundo es justOne flag.

DELLETION_CRITTERIA: (opcional) se eliminarán los documentos que cumplan los criterios de eliminación.

justOne: (opcional) si se establece en true o 1, elimina solo un documento.

Sintaxis

La sintaxis básica del método remove() es la siguiente:

>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

Ejemplo

Tenga en cuenta que la colección mycol tiene los siguientes datos.

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}

El siguiente ejemplo eliminará todos los documentos cuyo título es ‘MongoDB Overview’.

>db.mycol.remove({'title':'MongoDB Overview'})
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
>

Eliminar solo uno

Si hay varios registros y desea eliminar solo el primer registro, configure el parámetro justOne en el método remove().

>db.COLLECTION_NAME.remove(DELETION_CRITERIA, 1)

Eliminar todos los documentos

Si no especifica los criterios de eliminación, MongoDB eliminará todos los documentos de la colección. Esto es equivalente al comando truncate de SQL.

>db.mycol.remove()
>db.mycol.find()
>

Written by Tutor