Advertencia
El siguiente documento se refiere a la mongo shell, incluida en la descarga del servidor MongoDB. Para obtener información sobre la nueva MongoDB Shell (mongosh), consulta la documentación de mongosh.
Para entender las diferencias entre los dos shells, consulte Comparación entre el mongo Shell y mongosh.
Puedes escribir scripts para la shell mongo en JavaScript que manipulen datos en MongoDB o realicen operaciones administrativas.
Este tutorial proporciona una introducción para escribir JavaScript que utilice el mongo shell para acceder a MongoDB.
Apertura de nuevas conexiones
Desde el shell mongo o desde un archivo de JavaScript, puedes instanciar conexiones de base de datos usando el constructor Mongo():
new Mongo() new Mongo(<host>) new Mongo(<host:port>)
Considere el siguiente ejemplo que instancia una nueva conexión a la instancia de MongoDB que se ejecuta en localhost en el puerto predeterminado y establece la db variable global en myDatabase usando el getDB() método:
conn = new Mongo(); db = conn.getDB("myDatabase");
Si te conectas a una instancia de MongoDB que haga cumplir el control de acceso, puedes usar el método db.auth() para autenticarte.
Además, puedes usar el método connect() para conectar con la instancia de MongoDB. El siguiente ejemplo se conecta a la instancia de MongoDB que se está ejecutando en localhost con el puerto no por defecto 27020 y establece la variable global db:
db = connect("localhost:27020/myDatabase");
Diferencias entre interactivo y scriptado mongo
Nota
A partir de la versión 4.2, el mongo shell proporciona el método isInteractive() que devuelve un valor booleano que indica si el mongo shell está en ejecución en modo interactivo o en modo script.
Al escribir scripts para el shell mongo, ten en cuenta lo siguiente:
Para establecer la variable global
db, utiliza el métodogetDB()o el métodoconnect(). Puedes asignar la referencia de la base de datos a una variable diferente adb.Las operaciones de escritura en el
mongoshell utilizan la preocupación de escritura { w: 1 } por defecto. Si se realizan operaciones masivas, utilice losBulk()métodos.No puedes usar ningún ayudante de shell (por
use <dbname>ejemplo,,,show dbsetc.) dentro del archivo JavaScript porque no son JavaScript válidos.La siguiente tabla relaciona los asistentes de shell
mongomás comunes con sus equivalentes en JavaScript.asistente de shellEquivalentes de JavaScriptshow dbs,show databasesdb.adminCommand('listDatabases') use <db> db = db.getSiblingDB('<db>') show collections db.getCollectionNames() show users db.getUsers() show roles db.getRoles({showBuiltinRoles: true}) show log <logname> db.adminCommand({ 'getLog' : '<logname>' }) show logs db.adminCommand({ 'getLog' : '*' }) it cursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); } En el modo interactivo, el
mongoshell imprime los resultados de las operaciones, incluido el contenido de todos los cursores. En scripts, utiliza la función de JavaScriptprint()o la funciónprintjson()específicamongo, que retorna JSON formateado.Ejemplo
Para imprimir todos los elementos en un cursor de resultado en scripts de shell, utilice el siguiente
mongomodismo:cursor = db.collection.find(); while ( cursor.hasNext() ) { printjson( cursor.next() ); }
script
Desde el mensaje del sistema, utiliza la shell mongo para evaluar JavaScript.
--eval opción
Utilice la --eval opción del shell para pasarle al shell un fragmento de JavaScript, como en lo mongo siguiente:
mongo test --eval "printjson(db.getCollectionNames())"
Esto devuelve la salida de db.getCollectionNames() utilizando el mongo shell conectado mongod mongos a 27017 la localhost instancia o que se ejecuta en el puerto en la interfaz.
Ejecuta un archivo JavaScript
Puede especificar un archivo .js en el shell mongo, y mongo ejecutará el JavaScript directamente. Considera el siguiente ejemplo:
mongo localhost:27017/test myjsfile.js
Esta operación ejecuta el myjsfile.js script en un shell que se conecta a mongo la test base de datos en la instancia accesible a través de mongod la localhost interfaz en el 27017 puerto.
Como alternativa, puede especificar los parámetros de conexión de MongoDB dentro del archivo JavaScript mediante el Mongo() constructor.Consulte "Abrir nuevas conexiones" para obtener más información.
Puede ejecutar un .js archivo desde dentro de,mongosh load() utilizando la función, como en lo siguiente:
load("myjstest.js")
Esta función carga y ejecuta el archivo myjstest.js.
El método load() acepta rutas relativas y absolutas. Si el directorio de trabajo actual de mongosh es /data/db, y el myjstest.js reside en el directorio /data/db/scripts, entonces las siguientes llamadas dentro de mongosh serían equivalentes:
load("scripts/myjstest.js") load("/data/db/scripts/myjstest.js")