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
mongousam 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
mongomais comuns para seus equivalentes em JavaScript.Ajudantes 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(); } No modo interativo, a shell
mongoimprime os resultados das operações, incluindo o conteúdo de todos os cursores. Em scripts, use a função JavaScriptprint()ou a funçãomongoespecíficaprintjson()que retorna JSON formatado.Exemplo
Para imprimir todos os itens em um cursor de resultado em
mongoscripts 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")