26 - MongoDB shell - cargar y ejecutar un archivo *.js

Vimos en el concepto anterior que desde la aplicación de consola de MongoDB (shell) podemos ejecutar comandos JavaScript, ahora veremos que dichos comandos podemos tenerlos en un archivo *.js y cargarlos mediante un comando.

Si tenemos que implementar script de mediana o gran complejidad lo más adecuado es utilizar un editor de texto y grabarlo en un archivo *.js

Por ejemplo codifiquemos con nuestro editor favorito el siguiente bloque en un archivo llamado 'creacion.js' y lo guardemos en la carpeta c:\\scriptmongodb\\:

db.articulos.drop()
for(i = 1; i <= 10; i++) {
  db.articulos.insertOne(
    {
      _id: i,  
      nombre: 'nombre'+i
    }
  )
}

MongoDB shell JavaScript load

Luego de haber grabado el archivo con el nombre 'creacion.js' en la carpeta c:\scriptmongodb procedamos a ejecutar el comando load desde el shell de MongoDB:

load("c:\\scriptmongodb\\creacion.js")

Luego de ejecutar la función load nos informará si se ejecutó el bloque de comandos en forma exitosa:

MongoDB shell JavaScript load

Podemos comprobar que la colección articulos se creó correctamente y se cargaron los 10 documentos:

MongoDB shell

Hemos pasado el path absoluto (c:\\scriptmongodb\\) donde se encuentra el archivo 'creacion.js', si el archivo *.js se encuentra en la misma capeta desde donde iniciamos MongoDB shell podemos especificar solamente el nombre del archivo al llamar a load:

load("creacion.js")

Si queremos ejecutar mongo.exe desde cualquier carpeta de Windows 10, debemos configurar una variable de entorno con la carpeta donde hemos instalado MongoDB.

Los pasos para su configuración son:

  • En 'Escribe aquí para buscar' ingresa: 'variables de entorno' y selecciona:

    MongoDB shell variables de entorno Windows 10

  • En el diálogo que aparece haga clic en el botón de 'Variables de entorno...'.

  • En la sección Variables del sistema, busque la variable de entorno PATH y selecciónela. Haga clic en Editar. Si no existe la variable de entorno PATH, haga clic en Nuevo.

  • Presione el botón 'Examinar' y busque la carpeta donde se instaló MongoDB y selecciónela:

    MongoDB shell variables de entorno Windows 10

    Debe quedar almacenado el path donde se encuentra el archivo mongo.exe

    Ahora si podemos ejecutar 'mongo.exe' desde cualquier carpeta del sistema operativo simplemente indicando su nombre:

    MongoDB shell variables de entorno Windows 10

Comandos de MongoDB en un archivo *.js

En un script no podemos utilizar los comandos show dbs, use, show collections etc. pero podemos sustituirlos llamando a métodos:

use base1
db = db.getSiblingDB('base1')
show dbs, show databases
db.adminCommand('listDatabases')
show collections
db.getCollectionNames()
show users
db.getUsers()
show roles
db.getRoles({showBuiltinRoles: true})
show log
db.adminCommand({ 'getLog' : '' })
show logs
db.adminCommand({ 'getLog' : '*' })
it
cursor = db.collection.find();
while ( cursor.hasNext() ) {
   printjson( cursor.next() );
}

En un script siempre que necesitemos hacer salidas por pantalla debemos utilizar la función print y printjson, por ejemplo:

printjson(db.adminCommand('listDatabases'))

Modifiquemos el archivo 'creacion.js' con el siguiente código y luego volvamos a cargarlo mediante la función 'load':

printjson(db.adminCommand('listDatabases'))
db = db.getSiblingDB('base1')
print(db.getCollectionNames())
db.articulos.drop()
for(i = 1; i <= 10; i++) {
  db.articulos.insertOne(
    {
      _id: i,  
      nombre: 'nombre'+i
    }
  )
}
cursor = db.articulos.find();
while ( cursor.hasNext() ) {
   printjson(cursor.next());
}

Podemos comprobar que se muestran los datos:

MongoDB shell load