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 } ) }
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:
Podemos comprobar que la colección articulos se creó correctamente y se cargaron los 10 documentos:
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:
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:
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:
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: