00:00 / 00:00

Fecha publicación: Jun 16, 2021

MongoDb VSCode Plugin

Los que usamos Visual Studio Code para todo estamos de enhorabuena el equipo de MongoDB nos ofrece un plugin que nos permite conectar a un servidor, explorar bases de datos, colecciones, documentos y además poder lanzar consultas.

En este vídeo vamos a ver como instalarlo y usarlo.

Manos a la obra

Vamos a por la instalación: el nombre de este plugin es: mongodb.mongodb-vscode, también lo puedes buscar e instalar en el buscador de VSCode:

Mongo Plugin Install From VSCode, haz click en sección  plugins VSCode, busca MongoDB e instala mongodb.mongodb-vscode

Cuando lo tenemos instalado podemos ver un icono en nuestro side bar, con el logo de MongoDB.

Sidebar de VSCode seleccionar icono con la hoja de MongoDB

¿Qué nos permite hacer este plugin?

De primeras podemos conectarnos a una base de datos mongo sea local o remota, en este caso me voy a conectar a mi máquina en local.

Si pulsamos en Add Connection

Añadir conexión a base de datos, en explorador mongo

Podemos elegir a que servidor nos conectamos, en este caso vamos a por local:

Conectar a localhost

Una vez conectados, podemos ver un árbol con las bases de datos, colecciones, documentos y si pinchamos en estos podemos ver el detalle de cada uno.

Explorador bases de datos mongo, en sidebar

Otro tema interesante es que podemos crear ficheros con playgrounds en JavaScript, es decir con sets de instrucciones, de hecho si le damos a crear uno, podemos ver que nos genera uno a modo de plantilla:

Crear nuevo playground en explorador mongo

// MongoDB Playground
// To disable this template go to Settings | MongoDB | Use Default Template For Playground.
// Make sure you are connected to enable completions and to be able to run a playground.
// Use Ctrl+Space inside a snippet or a string literal to trigger completions.

// Select the database to use.
use("mongodbVSCodePlaygroundDB");

// The drop() command destroys all data from a collection.
// Make sure you run it against the correct database and collection.
db.sales.drop();

// Insert a few documents into the sales collection.
db.sales.insertMany([
  {
    _id: 1,
    item: "abc",
    price: 10,
    quantity: 2,
    date: new Date("2014-03-01T08:00:00Z"),
  },
  {
    _id: 2,
    item: "jkl",
    price: 20,
    quantity: 1,
    date: new Date("2014-03-01T09:00:00Z"),
  },
  {
    _id: 3,
    item: "xyz",
    price: 5,
    quantity: 10,
    date: new Date("2014-03-15T09:00:00Z"),
  },
  {
    _id: 4,
    item: "xyz",
    price: 5,
    quantity: 20,
    date: new Date("2014-04-04T11:21:39.736Z"),
  },
  {
    _id: 5,
    item: "abc",
    price: 10,
    quantity: 10,
    date: new Date("2014-04-04T21:23:13.331Z"),
  },
  {
    _id: 6,
    item: "def",
    price: 7.5,
    quantity: 5,
    date: new Date("2015-06-04T05:08:13Z"),
  },
  {
    _id: 7,
    item: "def",
    price: 7.5,
    quantity: 10,
    date: new Date("2015-09-10T08:43:00Z"),
  },
  {
    _id: 8,
    item: "abc",
    price: 10,
    quantity: 5,
    date: new Date("2016-02-06T20:20:13Z"),
  },
]);

// Run a find command to view items sold on April 4th, 2014.
db.sales.find({
  date: { $gte: new Date("2014-04-04"), $lt: new Date("2014-04-05") },
});

// Build an aggregation to view total sales for each product in 2014.
const aggregation = [
  {
    $match: {
      date: { $gte: new Date("2014-01-01"), $lt: new Date("2015-01-01") },
    },
  },
  {
    $group: {
      _id: "$item",
      totalSaleAmount: { $sum: { $multiply: ["$price", "$quantity"] } },
    },
  },
];

// Run the aggregation and open a cursor to the results.
// Use toArray() to exhaust the cursor to return the whole result set.
// You can use hasNext()/next() to iterate through the cursor page by page.
db.sales.aggregate(aggregation);

Ojo, ésto crea una base de datos en la conexión que tengamos activa, y lanza una query, cada vez que se va a ejecutar borra la base de datos, ¡mucho cuidado con usar una plantilla como esta en entornos de producción! :)

En el área donde están los tabs de fichero a la derecha del todo podemos ver un botón de "play" si lo pulsamos podemos ver que el script se ejecuta y nos sale un diálogo de confirmación avisándonos que vamos a tirar ésta query con el servidor, le decimos que adelante y lanza el script, a la derecha aparece un panel con el resultado.

Mongo al lado de pestañas ficheros botón play del plugin de MongoDb

Resultados de la query

Podemos irnos a Mongo Compass o al propio VSCode y ver que la base de datos de ejemplo se ha creado.

Otra opción interesante es la de lanzar queries contra bases de datos existentes, vamos a borrar el contenido del playground activo y añadir nuestro contenido:

use("mymovies");

db.movies.find({}, { title: 1 });

Podemos grabarlo y se crea un fichero con extension .mongo que después podemos recuperar

Vamos a ver como se porta una query agregada:

use("mymovies");

db.movies.aggregate([
  {
    $match: {
      year: 2008,
    },
  },
  {
    $limit: 5,
  },
  {
    $project: {
      title: 1,
    },
  },
]);

Como has podido ver, si estás enganchado a Visual Studio Code, con este plugin te vas a sentir como pez en el agua.

¿Con ganas de aprender Backend?

En Lemoncode impartimos un Bootcamp Backend Online, centrado en stack node y stack .net, en él encontrarás todos los recursos necesarios: clases de los mejores profesionales del sector, tutorías en cuanto las necesites y ejercicios para desarrollar lo aprendido en los distintos módulos. Si quieres saber más puedes pinchar aquí para más información sobre este Bootcamp Backend.