MongoDB course

Ver Otros Cursos

Mongo Shell

Mongodb, viene con un shell, el cual te permite interactuar con las bases de datos, ejecutar código de javascript, inspeccionar instanacias o administrar la base de datos en general. 

Esta sección abarca como usar la shell como parte de tus herramientas de linea de comandos, como personalizarla, y usar sus funcionalidades más avanzadas.

Iniciar el Shell Mongo

Para iniciar el shell de mongo, puedes ejecutar en tu terminal.

mongo

Este shell se conectará automaticamente a tu instancia local de Mongodb (mongod). Aunque puede conectarse a cualquier maquina que tu computador pueda.

El shell es un programa capaz de ejecutar código de Javascript. prueba ejecutando lo siguiente:

x = 200
x / 5

Y esto incluye bibliotecas como Math, Date, etc.

Math.sin(Math.PI / 2) //1
new Date("2019/1/1")
"Hello World!".replace("World", "Mongodb")

Incluso podemos ejecutar funciones de Javascript.

function factorial(n) { if (n <= 1) return 1; return n * factorial(n - 1); }
factorial(5) //120

Este shell no es tan solo un interprete de Javascript sino tambin una aplicación cliente de MongoDB, así que lo podemos usar para consultar la base de datos y operar con los datos a traves de consultas en una instancia en general.

Por ejemplo, para ver la base de datos actual podemos usar el comando db, y para seleccionar una base de datos podemos usar el comando use. Por defecto cuando nos conectamos al shell este selecciona una base de datos llamada test.

db
use foobar

Remote Conection

Para conectar el shell a una maquina distinta, o a una base de datos especifica, tienes que espeficiar el hostname, el port (puerto) y el nombre al ejecutar el comando mongo.

$ mongo some-host:30000/myDB
MongoDB shell version: 2.4.0
connecting to: some-host:30000/myDB

el comando db ahora se referirá a una base de datos llamada myDB en nuestra servidor local.

Por defecto el shell te conecta a una base de datos llamada test, aunque algunas veces tambien es util empezar el shell sin una base de datos, en ese caso puedes usar el argumento --nodb

mongo --nodb

Si ejecutas db en el shell, este te dira que es undefined, es decir que la base de datos no esta definida.

if you need some credentials to do operations 

mongo mongodb://somehost.com:3000/mydb -u user -p password

Once the shell started, puedes conectarse a una base de datos nueva, escribiendo el nombre, o tambien puedes conectarte a una ya existente.

> conn = new Mongo("localhost")
connection to localhost:27017
> conn = new Mongo("localhost:27017")
connection to localhost:27017
> db = conn.getDB("testing")
testing
> db
testing
> show dbs

A partir de aqui ya puedes volver a usar el comando db, o conectarte a otra db usando los comandos antes mencionados.

Tips para usar el Shell

Debido a que el shell de Mongo ejecuta Javascript, esto te permitira encontrar muchas soluciones en la internet. Pero si hablamos de consultar el código rapidamente, tienes el comando. help

>help
db.help()                    help on db methods
	db.mycoll.help()             help on collection methods
	sh.help()                    sharding helpers
	rs.help()                    replica set helpers
	help admin                   administrative help
	help connect                 connecting to a db help
	help keys                    key shortcuts
	help misc                    misc things to know
	help mr                      mapreduce

	show dbs                     show database names
...

Aunque tambien puedes obener ayuda a nivel de base de datos, usando db.help() o en una colección usando db.foo.help()

Adicionalmente tambien puedes obtener el código de Javascript de una funcion si la ejecutas sin los parentesis ()

db.foo.update

El cual te mostrará como funciona esta función.

Ejecutando Scripts desde el Shell

El shell adicionalmente a ejecutar Javascript de manera interactiva, tambien nos permite ejecutar scripts, pasandolos como argumentos desde la consola.

Para poner un ejemplo crea tres archivos javascript, usando la funcion print() con un mensaje. Luego para ejecutarlos utiliza el shell mongo.

$ mongo script1.js script2.js script3.js
loading file: script1.js
I am script 1
loading file: script2.js
I am script 2
loading file: script3.js
I am script 3

El shell ejecutará cada script y finalizará la conexión.

Si quieres ejecutar usando una conexión remota (es decir, no usando el localhost), puedes especificar primero la conexión y luego los scripts.

mongo --quiet server-1:30000/foo scritp1.js script2.js script3.js

Esto se ejecutará en el servidor remoto de igual manera que en el local. Adicionalmente aqui estamos usando el comando --quiet, el cual tan solo ejecuta los scripts sin mostrar la version de Mongodb instalada.

Aunque tambien es posible ejecutar scripts, una vez iniciada la conexión al shell, usando la funcion load()

load("script1.js")

Los scripts pueden tener acceso a las variables globales como db, ademas de otras. Sin embargo las palabras claves como "use db" o "show collections" no funcionan desde los scripts, en lugar de estos tenemos que usar funciones equivalentes para estas operaciones en Javascript.

db = db.getSiblingDB('imgshare') // use db
print(db.adminCommand('listDatabases')) // show dbs
print(db.getCollectionNames()) // show collections

Puedes conocer un poco más de estas funciones en el apartado "Escribe scripts de Mongodb" en la documentación oficial.

Tambien pudes usar scripts que inyecten variables dentro del shell. Por ejemplo podemos crear una funcion que nos permita conectarnos a una base de datos, recibiendo como parametros un puerto y un nombre.

var connectTo = function(port, dbName) {
  if (!port) port = 27017;
  if (!dbName) dbName = "test";

  db = connect("localhost:" + port + "/" + dbName);
  print("Now your are connected to: " + dbName);
  return db;
}

Si cargamos este script en el shell.

> typeof connectTo
undefined
> load('connectTo.js')
> typeof connectTo
function

Estos scripts pueden ayudarte a automatizar tareas repetitivas o administrativas.

Por defecto el shell se posiciona en el directorio en donde haz iniciado el shell. Para ver tu directorio actual de trabajo puedes ejectur pwd(). Si el script no esta en tu directorio actual, puedes darle una ruta relativa o absoluta.

Mongodb es una base de datos Nosql, diseñada para el manejo gigantesco de datos de la web, utiliza la notación de objetos de Javascript o JSON como formato de datos.

vistas