Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Mongo Shell heredado

Escribe Scripts para el mongo Shell

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.

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");

Tip

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étodo getDB() o el método connect(). Puedes asignar la referencia de la base de datos a una variable diferente a db.

  • Las operaciones de escritura en el mongo shell utilizan la preocupación de escritura { w: 1 } por defecto. Si se realizan operaciones masivas, utilice los Bulk() métodos.

  • No puedes usar ningún ayudante de shell (poruse <dbname> ejemplo,,, show dbs etc.) dentro del archivo JavaScript porque no son JavaScript válidos.

    La siguiente tabla relaciona los asistentes de shell mongo más comunes con sus equivalentes en JavaScript.

    asistente de shell
    Equivalentes de JavaScript

    show dbs, show databases

    db.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 mongo shell imprime los resultados de las operaciones, incluido el contenido de todos los cursores. En scripts, utiliza la función de JavaScript print() o la función printjson() específica mongo, que retorna JSON formateado.

    Ejemplo

    Para imprimir todos los elementos en un cursor de resultado en scripts de shell, utilice el siguiente mongo modismo:

    cursor = db.collection.find();
    while ( cursor.hasNext() ) {
    printjson( cursor.next() );
    }

Desde el mensaje del sistema, utiliza la shell mongo para evaluar JavaScript.

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.

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")

Nota

No existe una ruta de búsqueda para la función load(). Si el script deseado no se encuentra en el directorio de trabajo actual ni en la ruta especificada completa, mongosh no podrá acceder al archivo.

Volver

Acceder a la ayuda de mongo Shell

En esta página