https://www.mongodb.com/try/download/shell
https://www.mongodb.com/try/download/database-tools
Siguiente, siguiente...
Siguiente, siguiente...
mongod --version # verifico que mi servidor instalado y configurado
Nota: si el comando no es encontrador. Colocar la carpeta de los binarios en las variables de entorno del sistema operativo. Colocar en el path.
C:\Program Files\MongoDB\Server\6.0\bin
mongosh --version # verifico que tenga instalado y configurado
mongodump --version # verifico que tenga instalado y configurado
Nota: si el comando no es encontrador. Colocar la carpeta de los binarios en las variables de entorno del sistema operativo. Colocar en el path.
C:\Program Files\MongoDB\Tools\100\bin
https://www.mongodb.com/docs/manual/reference/program/mongod/
mongod
IMPORTANTE: Si no queda tomada la consola. Tengo que crear los siguientes (directorios/carpetas). C:\data\db (O sea crear data dentro del disco C: y dentro de data la carpeta db)
Levantar MongoD en una carpeta personalizada
mongod --dbpath="D:\mis_bases_de_datos\nombre"
Acuerdense que tiene que estar levantado el servidor mongod
mongosh
Si no lo tengo levantado el error:
Current Mongosh Log ID: 637ead1554cbe0578d0d7099
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.4
Using MongoDB: 6.0.2
Using Mongosh: 1.5.4
https://www.mongodb.com/docs/drivers/
show dbs
use <nombre-de-la-base-de-datos>
use db-mongo
Nota: Tener en cuenta que la base de datos se crea en memoria hasta que no se crea alguna colección.
Nota: Tengo que estar posicionado dentro de la DB. A la cual le quiero agregar una colección
# Creo una colección en forma implicita
db.createCollection('<nombre-de-colección>')
db.createCollection('productos')
# Creo una colección en forma explicita
db.<nombre-colección>.insertOne({})
db.productos.insertOne({nombre: 'TV', precio: 1234})
db.clientes.insertMany([{},{},{}]) # Tengo que colocar los documentos dentro de un ARRAY
db.productos.insertMany(
[
{nombre: "Heladera", precio: 231},
{nombre: "Microondas", precio: 2331},
{nombre: "Monitor", precio: 3233},
{nombre: "Notebook", precio: 2311},
{nombre: "Zapatilla", precio: 441},
]
)
Cada vez que inserto un documento, se crea automaticamente el ObjectID. Este filed es único. No se repite.
https://www.mongodb.com/docs/manual/reference/method/ObjectId/
Conversor de ObjectID a Timestamp https://nddapp.com/object-id-to-timestamp-converter.html
db.clientes.find() # Me lista todos los documentos dentro de la colección clientes
db.clientes.find({})
db.productos.find({ nombre: 'Cocina' })
db.productos.find({ nombre: /cocina/i }) # Utilizo una regex para buscar tanto en mayuscula como en minuscula cocina
Otra forma de hacer filtros con regex
https://www.mongodb.com/docs/manual/reference/operator/query/regex/
db.productos.find(
{
nombre: {
$regex: 'cocina',
$opciones: 'i'
}
}
)
https://regexr.com/ https://regex101.com/
mongod
Otra manera de levantar el servidor local
mongod --dbpath="D:\mis_bases_de_datos\nombre"
Se conecta por defecto a esta URI: mongodb://127.0.0.1:27017/
mongosh
show dbs
show collections
db
db.usuarios.find({nombre: /o$/}) # Todos los que terminan con o
db.usuarios.find({nombre: /^A/}) # Todos los que empiezan con A
Ejemplo de uso con $regex
const search = 'A'
db.usuarios.find(
{
nombre: {
$regex: `^${search}`,
$options: 'i' # No es obligatorio pero le puedo pasar optiones (Flags)
}
}
)
https://www.mongodb.com/docs/manual/reference/operator/query/and/
db.usuarios.find(
{
$and: [
{nombre: 'Adrian'},
{edad: 23}
]
}
) # Si los patrones de búsqueda se cumplen va a mostrar los documentos que cumplen con ambas
db.usuarios.find(
{
$or: [
{nombre: 'Adrian'},
{edad: 27}
]
}
) # Busca uno u otro de los patrones. No necesariamente se tienen que cumplir ambos patrones
https://www.mongodb.com/docs/manual/reference/operator/query/gt/
db.usuarios.find(
{
edad: { $gt: 29 }
}
) # Busca en el field edad los mayores a 29
db.usuarios.find(
{
edad: { $gt: 29 }
}
) # Busca en el field edad los mayores e iguales a 29
db.usuarios.find(
{
edad: { $lt: 29 }
}
) # Busca en el field edad los menores a 29
db.usuarios.find(
{
edad: { $lte: 29 }
}
) # Busca en el field edad los menores o iguales a 29
db.usuarios.find(
{
nombre: {
$ne: 'Gabriel'
}
}
)
db.usuarios.find(
{
edad: {
$in: [24, 27, 26]
}
}
)
db.usuarios.find(
{
edad: {
$nin: [24, 27, 26]
}
}
)
db.usuarios.find({}).sort(
{
nombre: -1 # Todos los documentos ordenados de la z-a
}
)
db.usuarios.find({}).sort(
{
nombre: 1 # Todos los documentos ordenados de la a-z
}
)
Caso de uso: Todos los documentos mayores a 26 ordenados de menor a mayor
db.usuarios.find(
{
edad: {
$gte: 26
}
}
).sort(
{
edad: 1
}
)
db.usuarios.find({}).limit(3)
db.usuarios.find({}).skip(3)
Caso de uso: Hacer un paginado
db.usuarios.find({}).limit(5).skip(0)
db.usuarios.find().size()
db.usuarios.countDocuments()
Nota: Por defecto siempre muestra el ObjectID
db.usuarios.find({}, {edad: 1}) # Me muestra solo la edad con el ObjID.
db.usuarios.find({}, {nombre: 1, _id: 0}) # Solo muestra nombre
db.usuarios.find({}, {edad: 0, _id: 0}) # Solo muestra nombre