Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Mongo Shell heredado

Escribe Scripts para el mongo Shell

Advertencia

El siguiente documento se relaciona con el 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 por defecto y establece la variable global db en myDatabase, utilizando el método getDB() :

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 la mongo shell usan por defecto un nivel de confirmación de escritura (write concern) de { w: 1 }. Si realiza operaciones en bloque, utilice los métodos Bulk().

  • No puedes utilizar ningún asistente de Shell (por ejemplo, use <dbname>, show dbs, etc.) dentro del archivo JavaScript porque no son JavaScript válido.

    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 de un cursor de resultados en mongo scripts de shell, utiliza el siguiente recurso:

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

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

Utiliza la opción --eval en la mongo shell para pasarle un fragmento de JavaScript, como se muestra a continuación:

mongo test --eval "printjson(db.getCollectionNames())"

Esto devuelve la salida de db.getCollectionNames() usando el shell mongo conectado a mongod o la instancia mongos ejecutándose en el puerto 27017 en la interfaz localhost.

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 script myjsfile.js en un shell mongo que se conecta a la base de datos test en la mongod instancia accesible a través de la interfaz localhost en el puerto 27017.

Alternativamente, puedes especificar los parámetros de conexión de mongodb dentro del archivo javascript utilizando el constructor Mongo(). Consulta Nuevas conexiones que se abren para obtener más información.

Puede ejecutar un archivo .js desde mongosh, utilizando la función load(), como en el siguiente ejemplo:

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