DEV Community

Cover image for MongoDB for Dummies (like me)
Fernando Chata
Fernando Chata

Posted on • Edited on

MongoDB for Dummies (like me)

Ejecutables

Comandos básicos

  • Conecta a tu instancia local de MongoDB
mongosh
Enter fullscreen mode Exit fullscreen mode
  • Muestra todas las bases de datos
  • Muestra todas las colecciones de la actual base de datos
show dbs
show collections
Enter fullscreen mode Exit fullscreen mode
  • Cambia a la base de datos ingresada
use <nombre_bd>
Enter fullscreen mode Exit fullscreen mode
  • Muestra tu actual BD
db
Enter fullscreen mode Exit fullscreen mode
  • Elimina tu actual BD
db.dropDatabase()
Enter fullscreen mode Exit fullscreen mode
  • Crear colección
db.createCollection(<Name>, Options)

db.createCollection(<Name>, {
   capped : true,
   size : sizeLimit,
   max : documentLimit,
   validator: { $and:
      [   { phone: { $type: "string" } },
          { email: { $regex: /@flares\.com$/ } },
          { status: { $in: [ "Registered", "Unknown" ] } }
       ]
    }
})

db.createCollection( 'login', {
    validator: { $jsonSchema: {
        bsonType: "object",
        "additionalProperties": false,
       required: [ "email" ],
       properties: {
          email: {
             bsonType : "string",
             pattern : "@flares\.com$",
             description: "string meets the given expression"
          },
          status: {
             enum: [ "registered", "Invalid" ],
             description: "status must be within enum values"
          }
       }
    } },
} )
Enter fullscreen mode Exit fullscreen mode
  • Cambiar nombre de colección
db.<db_name>.renameCollection(<new_name_collection>)
db.login.renameCollection(<newCollectionName>)
Enter fullscreen mode Exit fullscreen mode

Create

db.<collectionName>.<command>

  • insertOne collectionName.insertOne({document})
  • insertMany collectionName.insertMany([{document1},{document2},{ document3}….{ documentn}])

Crea uno o varios documentos dentro de una colección

db.users.insert({
   name: 'Fernando',
   age: 35,
   interesting: ['tecnology, 'music', 'movies'],
   address: {
      city: 'Santiago',
      street: 'Columbus av.'
   }.
   birdDate: Date()
})
db.users.insertOne({ name: "Fernando"})
db.users.insertMany({ name: "Fernando"}, {name: "Elias"})
Enter fullscreen mode Exit fullscreen mode

Read

db.<collectionName>.<command>

  • find()
  • find(<filterObject>)
  • find(<filterObject>, <selectObject>)
db.users.find().pretty()
db.users.find({ name: "Fernando"})
db.users.find({ email: "fernando@mail.com"}, {name: 1})
db.users.find({}, {email: 0})
Enter fullscreen mode Exit fullscreen mode

El primer comando muestra todos los documentos de la colección.
El segundo muestra todos los documentos cuyo name sea Fernando.
El tercero muestra unicamente el name de los documentos cuyo email sea fernando@mail.com
El cuarto muestra todos los documentos excepto el campo email

  • findOne(<filterObject>)
db.users.findOne({ name: "Fernando"})
Enter fullscreen mode Exit fullscreen mode

Muestra sólo el primer documento que cumple el filtro

  • countDocuments(<filterObject>)
db.users.countDocuments({ name: "Fernando"})
Enter fullscreen mode Exit fullscreen mode

Regresa el número de documentos que cumple el filtro


Update

db.<collectionName>.<command>

  • updateOne
  • updateMany
db.users.updateOne({ age: 20 }, { $set: { age: 21 } })
db.users.updateMany({ age: 12 }, { $set: { age: 15 } })
Enter fullscreen mode Exit fullscreen mode

El primero actualiza la edad del primer documento que encuentra, en cambio el segundo actualiza todos los documentos que cumplan el filtro.

  • replaceOne
db.users.replaceOne({ age: 12 }, { name:"mi nombre", age: 13 })
Enter fullscreen mode Exit fullscreen mode

Reemplaza el primer objeto completo que cumpla el filtro


Delete

db.<collectionName>.<command>

  • deleteOne
  • deleteMany
db.users.deleteOne({age: 10})
db.users.deleteMany({age: 10})
Enter fullscreen mode Exit fullscreen mode

El primer comando elimina el primer documento que cumpla el filtro y el segundo borra todos los documentos que cumplan el filtro


Filters

  • $eq (equal)
  • $ne (not equal)
db.users.find({ name: { $eq: "Fernando" } })
db.users.find({ name: { $ne: "Fernando" } })
Enter fullscreen mode Exit fullscreen mode

El primero muestra todos los documentos cuyo name sea igual a Fernando y el segundo todos los que sean diferentes.

  • $gt (greater than)
  • $gte (greater than or equal)
  • $lt (low than)
  • $lte (low than or equal)
b.users.find({ age: { $gt: 12 } })
db.users.find({ age: { $gte: 15 } })

b.users.find({ age: { $lt: 12 } })
db.users.find({ age: { $lte: 15 } })
Enter fullscreen mode Exit fullscreen mode

El primer comando muestra los documentos con un age mayor a 12, sin incluirlo.
El segundo muestra los documentos con un àge mayor a 15 incluyendo los que tengan 15.
Los dos siguientes de igual forma incluyendo o excluyéndolos del filtro.

  • $in (include)
  • $nin (non include)
db.users.find({ name: { $in: ["Fernando", "Jose"] } })
db.users.find({ name: { $nin: ["Fernando", "Jose"] } })
Enter fullscreen mode Exit fullscreen mode

El primer comando muestra los documentos cuyo name se encuentra en el arreglo y el segundo todos los que no se encuentren

  • $and
  • $or
  • $not
db.users.find({ $and: [{ age: 12 }, { name: "Fernando" }] })
db.users.find({ $or: [{ age: 12 }, { name: "Fernando" }] })
db.users.find({ name: { $not: { $eq: "Fernando" } } })
Enter fullscreen mode Exit fullscreen mode

El primer comando muestra los documentos que cumplen ambos filtros, el segundo sólo necesita cumplir uno de los filtros, el tercero invierte la selección dentro del filtro.

  • $exist
db.users.find({ name: { $exists: true } })
Enter fullscreen mode Exit fullscreen mode

Muestra los documentos que poseen un campo llamado name

  • $expr
db.users.find({ $expr: { $gt: ["$nota1", "$nota2"] } })

Enter fullscreen mode Exit fullscreen mode

Realiza la comparación entre diferentes campos, en el ejemplo se muestran los documentos cuya nota1 es mayor a su nota2


Read Modifiers

Formatear salida

  • pretty()
db.users.find({ age: 10}).pretty();
Enter fullscreen mode Exit fullscreen mode

Obtener registros únicos

  • distinct() collectionName.distinct(field,query)
db.users.distinct("name")
Enter fullscreen mode Exit fullscreen mode

Se pueden agregar al final de diferentes operaciones

  • sort
  • limit
  • skip
db.users.find().sort({ name: 1 })
db.users.find().limit(2)
db.users.find().skip(4)
Enter fullscreen mode Exit fullscreen mode

El primer comando ordena de forma alfabéticamente los documentos según el nombre.
El segundo sólo muestra los 2 primeros documentos.
El tercero omite los 4 primeros resultados


Complex Update Object

  • $set
  • $inc
  • $rename
  • $unset
b.users.updateOne({ age: 12 }, { $set: { name: "jose" } })
b.users.updateOne({ age: 12 }, { $inc: { age: 2 } })
b.users.updateMany({}, { $rename: { age: "years" } })
db.users.updateOne({ age: 12 }, { $unset: { age: "" } })
Enter fullscreen mode Exit fullscreen mode

El primer comando actualiza el name del primer documento que posea un age de 12
El segundo incrementa en 2 el age del primer documento que posea un age de 12
El tercero cambia el nombre del campo age a years de todos los documentos
El cuarto elimina el campo age del primer documentos con un age de 12

  • $push
  • $pull
b.users.updateMany({}, { $push: { friends: "John" } })
b.users.updateMany({}, { $pull: { friends: "Miguel" } })
Enter fullscreen mode Exit fullscreen mode

El primero agrega un valor a al arreglo friends, el segundo elimina el valor , ambos de todos los documentos.

Top comments (0)