Instalar Mongodb y Robo3T
Instalar MongoDB en Ubuntu 22.04
Importar clave GPG
Para empezar, importa la clave GPG pública de la última versión estable de MongoDB ejecutando el siguiente commando:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | gpg --dearmor | sudo tee /usr/share/keyrings/mongodb.gpg > /dev/null
Este commando devolverá OK si la clave se ha añadido con éxito:
## Output
OK
Repositorio
En este punto, APT todavía no sabe dónde encontrar el paquete mongodb-org que necesita para instalar la última versión de MongoDB.
Ejecuta el siguiente commando, que creará un archivo en el directorio sources.list.d llamado mongodb-org-4.4.list:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
Esta única línea le dice a APT todo lo que necesita saber sobre cuál es la fuente y dónde encontrarla:
deb
: Esto significa que la entrada de la fuente have referencia a una arquitectura normal de Debian.[ arch=amd64,arm64 ]
: Especifica para qué arquitecturas deben descargarse los datos de APT. En este caso, especifica las arquitecturas amd64 y arm64.https://repo.mongodb.org/apt/ubuntu
: Se trata de un URI que representa la ubicación donde se pueden encontrar los datos de APT. En este caso, el URI apunta a la dirección HTTPS donde se encuentra el repositorio official de MongoDB.jammy/mongodb-org/6.0
: Los repositorios de Ubuntu pueden container varias versiones diferentes. Esto especifica que sólo quieres la versión 6.0 del paquete mongodb-org disponible para la versión jammy de Ubuntu (22.04).multiverse
: Esta parte apunta a APT a uno de los cuatro repositorios principales de Ubuntu. En este caso, apunta al repositorio multiverse.
Después de ejecutar este commando, actualiza el índice de paquetes local de su servidor para que APT sepa dónde encontrar el paquete mongodb-org:
sudo apt update
Instalación y arranque
Instalación
sudo apt install mongodb-org
Arranque
sudo service mongod start
Verificación
sudo service mongod status
Deberíamos obtener un output como este:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
Docs: https:/.mongodb.org/manual
Main PID: 37128 (mongod)
Memory: 64.8M
CGroup: /system.slice/mongod.service
└─37128 /usr/bin/mongod --config /etc/mongod.conf
Si por algún casual obtenemos que no está activo:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-07-07 23:14:17 CEST; 33s ago
Docs: https:/.mongodb.org/manual
Process: 606001 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=14)
Main PID: 606001 (code=exited, status=14)
jul 07 23:14:17 ansango systemd[1]: Started MongoDB Database Server.
jul 07 23:14:17 ansango systemd[1]: mongod.service: Main process exited, code=exited, status=14/n/a
jul 07 23:14:17 ansango systemd[1]: mongod.service: Failed with result 'exit-code'.
Es probable que sea por falta de permisos en las carpetas internas. Para dar permisos podemos introducir en terminal lo siguiente:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
Parar MongoDB
sudo service mongod stop
Reiniciar
sudo service mongod restart
Empezar a usar MongoDB
mongo
MongoShell
mongo shell
Instalar Robo 3T en Ubuntu 22.04
Descarga
Para instalar Robo 3T primero descargaremos la versión oficial para Linux. Tendremos entonces un archivo comprimido con este nombre: robo3t-1.4.3-linux-x86_64-48f7dfd.tar.gz
Lo extraeremos con:
tar -xvzf robo3t-1.4.3-linux-x86_64-48f7dfd.tar.gz
# cambiar el nombre del archivo si es necesario
Crea una nueva carpta para el paquete en usr/local/bin:
sudo mkdir /usr/local/bin/robo3t
Mueve el paquete extraido a usr/local/bin/robo3t
sudo mv robo3t-1.4.3-linux-x86_64-48f7dfd/* /usr/local/bin/robo3t
Cámbiate al directorio:
cd /usr/local/bin/robo3t/
Permisos y acceso directo
Necesitamos dar permisos a Robo 3T:
sudo chmod +x robo3t ./robo3t
Ahora ya podemos ejecutar Robo 3T
./robo3t
Para customizar el icono que veremos en el dashboard podemos descargar la imagen que queramos y guardarla en el /bin
:
mv icon.png /usr/local/bin/robo3t/bin
Para crear un acceso desde el escritorio podemos crear un archivo en sr/share/applications
:
sudo nano /usr/share/applications/robo3t.desktop
Copiamos y pegamos lo siguiente:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Robo3t
Icon=/usr/local/bin/robo3t/bin/icon.png
Exec="/usr/local/bin/robo3t/bin/robo3t"
Comment=Robo3t
Categories=Development;
Terminal=false
StartupNotify=true
Insertar fake data con Mongo Shell
Por último vamos a generar datos falsos en MongoDB. Necesitarás tener un archivo .json
, o bien tener instalado Node JS
y un archivo .js
con los datos.
En este caso partiremos del supuesto de estar desarrollando una aplicación en Node
y que tenemos un .js
con un array de objetos:
// fake-data.js
module.exports = [
{
id: "123",
name: "Mexican Casserole",
ingredients: [
{ name: "Refried Beans", amount: 2, units: "cups" },
{ name: "Onions", amount: 1, units: "count" },
{ name: "Tortillas", amount: 5, units: "count" },
{ name: "Salsa", amount: 1, units: "cups" },
{ name: "Cheddar", amount: 2, units: "cups" },
],
originalRecipeLink:
"https://www.allrecipes.com/recipe/16560/mexican-casserole/",
},
{
id: "234",
name: "Chicken Cordon Bleu",
ingredients: [
{ name: "Chicken Breast Halves", amount: 4, units: "count" },
{ name: "Salt", amount: 0.25, units: "teaspoons" },
{ name: "Black Pepper", amount: 0.125, units: "teaspoons" },
{ name: "Swiss Cheese Slices", amount: 6, units: "count" },
{ name: "Ham", amount: 4, units: "count" },
{ name: "Bread Crumbs", amount: 0.5, units: "cups" },
],
originalRecipeLink:
"https://www.allrecipes.com/recipe/8495/chicken-cordon-bleu-i/",
},
];
Como pasar a .json
este tipo de archivos puede set un auténtico aburrimiento, vamos a crear un pequeño script que, mediante Node
nos convierta este .js
a .json
:
// convert-to-json.js
const fs = require("fs");
const recipes = require("./fake-data");
const FILE_NAME = "recipes.json";
fs.writeFileSync(FILE_NAME, JSON.stringify(recipes), "utf-8");
console.log("Done!");
Después mediante terminal ejecutaremos:
node convert-to-json.js
Esto nos generará un archivo json
en la raíz.
Ahora sólo nos queda meter todos estos datos directamente en nuesta base de datos, para ello tendremos que tener arrancado MongoDB, y entonces ejecutamos lo siguiente en nuestro terminal:
mongoimport --db="meal-tracker" --collection="recipes" --file="recipes.json" --jsonArray
¿Cómo podemos ver estos datos que hemos insertado?
Pues bien, para ello podemos recurrir a Robo 3T, o bien iniciando Mongo Shell, si elegimos esta última opción introduciremos:
use meal-tracker
db.recipes.find({}).pretty()
Si queremos crear una colección nueva:
db.meals.insert({ recipeId: '123', plannedDate: newDate() })