Advertencia
El siguiente documento se refiere a la mongo Shell, incluido en la descarga del servidor MongoDB. Para obtener información sobre el nuevo Shell MongoDB (),mongosh consulte la documentación de Mongosh.
Para comprender las diferencias entre las dos capas, consulte Comparación de las mongo capas mongosh y.
Puede escribir scripts para el shell en JavaScript que manipulen datos en MongoDB o realicen operaciones mongo 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 o desde un archivo JavaScript, puede crear mongo Mongo() instancias de conexiones de base de datos utilizando el constructor:
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 se conecta a una instancia de MongoDB que aplica control de acceso, puede usar el método para db.auth() autenticarse.
Además, puede usar el método para conectarse a la instancia de MongoDB. El siguiente ejemplo se conecta a la instancia de MongoDB que se ejecuta connect() en localhost con el puerto (no predeterminado) 27020 y establece la db variable global:
db = connect("localhost:27020/myDatabase");
Diferencias entre lo interactivo y lo guionado mongo
Nota
Al escribir scripts para el shell, tenga en cuenta lo mongo siguiente:
Para establecer la variable global
db, utilice el métodogetDB()o el métodoconnect(). Puede asignar la referencia de la base de datos a una variable distinta dedb.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 asigna los
mongoayudantes de shell más comunes a sus equivalentes de JavaScript.Ayudantes 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() ); }
Scripting
Desde el indicador del sistema, utilice el shell para evaluar mongo 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 .js archivo en el mongo shell, y ejecutará JavaScript directamente. Considere el siguiente mongo 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étodoload()acepta rutas relativas y absolutas. Si el directorio de trabajo actual demongoshes /data/db y myjstest.js reside en el directorio /data/db/scripts, las siguientes llamadas dentro demongoshserían equivalentes:
load("scripts/myjstest.js") load("/data/db/scripts/myjstest.js")