By: Ronal Forero
- Mongo en Linux
- Restaurar o importar DB
- Hacer un Backup de la DB
- Exportar salida de una Query MONGO a CSV
- Revisar indexacion de la base de datos
- Indexado 2d
- Listar base de datos y colecciones
- Consultas a Mongo con JS
- Operadores de Mongo
- Buscar dentro de un string
sudo systemctl start mongodb.service
sudo systemctl stop mongodb.service
sudo systemctl enable mongodb.service
mongo
si usas windows, hay que agregar mongo al path. No necesitamos entrar a Mongo para hacer estas operaciones
mongodump --db nombre_db -o ruta
Importante: Para importar la una base de datos debe haber una carpeta llamada "dump" y dentro de esta deben estar todos los archivos, tambien debes conocer el nombre de la base de datos. Si la version de mongo es superio a la version 4, puedes cambiar el nombre de la base de datos, simplemente donde dice nombre_de_base_de_datos pones cualquier nombre cardenasddddddddles.
mongorestore --db nombre_base_de_datos ruta_de_la_carpeta_con_la_db
sino funciona intenta esto, dependiendo de la version hay comandos de que no funcionan y a partir cierta version ningnun comando funcionara y la funcionalidad pasara a un software llamado mongo-tools
mongorestore -d db_name /path/
En caso de querer restaurar una base de datos, para no duplicarla. Debemos borrarla y luego restaurarla, con el siguiente comando, hacemos esas dos cosas
mongorestore --drop -d db_name /path/
mongoimport --db nombre_base_de_datos --collection nombre_de_la_coleccion --type json --file ruta_nombrearchivo.json --jsonArray
Nota: Si proporciona un solo documento, no utilice la opción --jsonArray.
Si tienes una Db con clave y deseas hacer un respaldo, debes tener las credenciales y ejecutar el siguiente comando
mongodump --db coindorDB --username username --password password --authenticationDatabase admin --out BackupPath
Si quieres guardar en un archivo csv la salida de una query, esta es una buena opcion. Yo usualmente hacia un script con la conexion a la base de datos, tambien usaba mongoose para hacer la query, usaba un script para convertir la salida en csv, pero hacer todo esto de una manera simplificada, es copiar un simple comando en la terminal y obtener el resultado en un archivo csv.
nombre_DB = nombre de la base de datos que vamos a usar
nombre_archivo.js = aqui puedes poner la ruta del archivo js donde esta la query o si estas posicionado en la rutas, podemos poner solo el nombre del archivo.
nombre_salida = es el nombre que va adoptar el archivo de salida generado por Mongo.
mongo nombre_DB nombre_archivo.js > nombre_salida.csv
Ejemplo: Aqui un ejemplo sencillo de lo que tiene el archivo js. Debe tener la Query, pero esta debe ser en mongo directo. Vamos a suponer que existe una coleccion llamada users
db.users.find({name:1})
Si no deseas usar un interprete como Moongose, entonces puedes hacer tus consultas con JS, es bastante comodo como para cuando necesitas hacer un script o algo para solucionar rapido. Puedes usar print, es como el console.log en Mongo. Lo demas lo puedes hacer con JS...
nombre_DB = nombre de la base de datos que vamos a usar
nombre_archivo.js = aqui puedes poner la ruta del archivo js donde esta la query o si estas posicionado en la rutas, podemos poner solo el nombre del archivo.
mongo nombre_DB nombre_archivo.js
Si no deseas usar un interprete como Moongose, entonces puedes hacer tus consultas con JS, es bastante comodo como para cuando necesitas hacer un script o algo para solucionar rapido. Puedes usar print, es como el console.log en Mongo. Lo demas lo puedes hacer con JS...
gte = Mayor o igual que.
Ejemplo:
{ createdAt:{$gte: new Date("2021-05-25T00:00:00Z") }
$eq - equal - igual
$lt - low than - menor que
$lte - low than equal - menor o igual que
$gt - greater than - mayor que
$gte - greater than - mayor que o igual que
$ne - not equal - distinto
$in - in - dentro de
$nin - not in - no dentro de
Buscar entre un rango de fechas Si queremos buscar data entre un rango de fechas, suponiendo que el campo de las fechas se llama createdAt
db.name_collection.find({createdAt: {$gte:ISODate('2021-01-03T01:02:27.409+00:00')}, createdAt:{$lte:ISODate('2021-01-03T13:09:20.696+00:00')})
A veces suele ser necesario revisar que tipo de indexado tiene una coleccion, asi que con el siguiente comando lo podremos hacer.
db.nombre_coleccion.getIndexes()
Este tipo de indexacion es para geolocaclizacion con altitude y latitude. Para indexar la coleccion debe usar el siguiente comando
db.nombre_de_la_coleccion.ensureIndex({"location": "2d"})
Entramos a mongo escribiendo mongo en la terminal.
show dbs
use dbs
para ejecutar este comando debemos previamente haber escogido una base de datos.
show collections
Muchas veces vamos a necesitar buscar dentro de un campo de tipo string, por ejemplo queremos buscar en campo que se llama code, todos los documentos que tengan ACE796, entonces si existe un documento que tenga en el campo codes: 000ACE796 lo va listar, ya que dentro del code esta la expresion regular ACE796. como por ejemplo: vamos a colocar la expresion regular entre //
db.nombre_de_la_coleccion.find({"code": /ACE796/})
En caso de querer buscar todos los campos code que contengan la expresion regular ACE796, pero con la condicion que delante de la misma no exista ningun caracter, entonces debemos hacer lo siguiente:
db.nombre_de_la_coleccion.find({"code": /^ACE796/i})
hemos agregado el caracter ^ y al final la letra i. esta query nos va traer todos los documentos donde la exprecion regular ACE796 se encuentre y que delante de la misma no exista ningun caracter.
http://rafinguer.blogspot.com/2014/10/fechas-en-mongodb.html
https://rafinguer.blogspot.com/2014/10/fechas-en-mongodb.html
https://www.ramoncarrasco.es/es/content/es/kb/126/como-hacer-consultas-en-mongodb-operadores