Aviso
O documento a seguir pertence ao mongo
shell, incluído no download do MongoDB Server. Para obter informações sobre a nova shell MongoDB (),mongosh
consulte a documentação mongosh.
Para entender as diferenças entre as duas conchas, consulte Comparação da shell mongo
e mongosh
.
Você pode escrever scripts para o shell mongo
no JavaScript que manipulam dados no MongoDB ou executam operações administrativas.
Este tutorial fornece uma introdução à escrita de JavaScript que usa o shell mongo
para acessar o MongoDB.
Abrindo novas conexões
A partir do shell mongo
ou de um arquivo JavaScript, você pode instanciar conexões de banco de dados de dados usando o construtor Mongo()
:
new Mongo() new Mongo(<host>) new Mongo(<host:port>)
Considere o exemplo a seguir que instancia uma nova conexão à instância do MongoDB em execução no localhost na porta padrão e define a variável global db
como myDatabase
usando o método getDB()
:
conn = new Mongo(); db = conn.getDB("myDatabase");
Se a conexão a uma instância do MongoDB que impõe controle de acesso, você pode usar o método db.auth()
para autenticar.
Além disso, você pode usar o método connect()
para se conectar à instância do MongoDB . O exemplo a seguir conecta à instância MongoDB que está sendo executada no localhost
com a porta 27020
não padrão e define a variável global db
:
db = connect("localhost:27020/myDatabase");
Dica
Diferenças entre interativo e com scripts mongo
Observação
A partir da versão 4.2, o shell mongo
fornece o método isInteractive()
que retorna um booleano indicando se o shell mongo
está sendo executado em modo interativo ou de script.
Ao escrever scripts para o shell mongo
, considere o seguinte:
Para configurar a variável global do
db
, utilize o métodogetDB()
ou o métodoconnect()
. Você pode atribuir a referência do banco de dados de dados a uma variável diferente dedb
.As operações de gravação no shell
mongo
usam uma preocupação de gravação de { w: 1 } por padrão. Se estiver realizando operações em massa, use os métodosBulk()
.Você não pode usar nenhum assistente de shell (por exemplo
use <dbname>
,show dbs
, etc.) dentro do arquivo JavaScript porque não são JavaScript válidos.A tabela a seguir mapeia os ajudantes de shell
mongo
mais comuns para seus equivalentes em JavaScript.Ajudantes de shellEquivalentes de JavaScriptshow 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(); } No modo interativo, a shell
mongo
imprime os resultados das operações, incluindo o conteúdo de todos os cursores. Em scripts, use a função JavaScriptprint()
ou a funçãomongo
específicaprintjson()
que retorna JSON formatado.Exemplo
Para imprimir todos os itens em um cursor de resultado em
mongo
scripts de shell, use o seguinte idioma:cursor = db.collection.find(); while ( cursor.hasNext() ) { printjson( cursor.next() ); }
Scripts
No prompt do sistema, use o shell mongo
para avaliar o JavaScript.
--eval
opção
Use a opção --eval
para o shell mongo
para passar ao shell um fragmento JavaScript, como no exemplo a seguir:
mongo test --eval "printjson(db.getCollectionNames())"
Isso retorna a saída de db.getCollectionNames()
usando o shell mongo
conectado à instância mongod
ou mongos
em execução na porta 27017
na interface localhost
.
Executar um arquivo JavaScript
Você pode especificar um arquivo .js
para a shell mongo
e mongo
executará o JavaScript diretamente. Considere o seguinte exemplo:
mongo localhost:27017/test myjsfile.js
Esta operação executa o script myjsfile.js
em um shell mongo
que se conecta ao banco de banco de dados test
na instância mongod
acessível por meio da interface localhost
na porta 27017
.
Como alternativa, você pode especificar os parâmetros de conexão do MongoDB dentro do arquivo JavaScript usando o construtor Mongo()
. Consulte Abrir novas conexões para obter mais informações.
Você pode executar um arquivo .js
de dentro mongosh
, usando a função load()
, como a seguir:
load("myjstest.js")
Esta função carrega e executa o arquivo myjstest.js
.
O método load()
aceita caminhos relativos e absolutos. Se a atual diretoria de trabalho de mongosh
for /data/db
e myjstest.js
residir no diretório /data/db/scripts
, as seguintes chamadas em mongosh
serão equivalentes:
load("scripts/myjstest.js") load("/data/db/scripts/myjstest.js")