{"id":54800,"date":"2022-11-08T05:52:37","date_gmt":"2022-11-08T08:52:37","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=54800&#038;preview=true&#038;preview_id=54800"},"modified":"2025-01-17T10:43:59","modified_gmt":"2025-01-17T13:43:59","slug":"banco-de-dados-mongodb","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/","title":{"rendered":"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber"},"content":{"rendered":"<p>Com base nos requisitos do seu software, voc\u00ea pode priorizar flexibilidade, escalabilidade, desempenho ou velocidade. Por isso, desenvolvedores e empresas muitas vezes ficam confusos ao escolher um banco de dados para suas necessidades. Se voc\u00ea procura um banco de dados altamente flex\u00edvel e escal\u00e1vel, capaz de agregar dados para an\u00e1lise de clientes, o MongoDB pode ser a escolha ideal para voc\u00ea!<\/p>\n\n<p>Neste artigo, discutiremos a estrutura do banco de dados do MongoDB e como criar, monitorar e gerenciar seu banco de dados! Vamos come\u00e7ar.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Como \u00e9 a estrutura de um banco de dados MongoDB?<\/h2>\n<p>O MongoDB \u00e9 um banco de dados NoSQL sem schema. Isso significa que voc\u00ea n\u00e3o especifica uma estrutura para tabelas\/bancos de dados como faz em bancos de dados SQL.<\/p>\n<p>Voc\u00ea sabia que os bancos de dados NoSQL s\u00e3o, na verdade, mais r\u00e1pidos do que os bancos de dados <a href=\"https:\/\/kinsta.com\/pt\/blog\/mongodb-vs-mysql\/\">relacionais<\/a>? Isso se deve a funcionalidades como indexa\u00e7\u00e3o, fragmenta\u00e7\u00e3o e dutos de agrega\u00e7\u00e3o. O MongoDB tamb\u00e9m \u00e9 conhecido por sua r\u00e1pida execu\u00e7\u00e3o de consultas. \u00c9 por isso que ele \u00e9 preferido por empresas como Google, Toyota e Forbes.<\/p>\n<p>Abaixo, exploraremos algumas funcionalidades-chave do MongoDB.<\/p>\n<h3>Documentos<\/h3>\n<p>MongoDB tem um modelo de dados de documentos que armazena dados como documentos JSON. Os documentos mapeiam naturalmente para os objetos no c\u00f3digo do aplicativo, facilitando o uso para os desenvolvedores.<\/p>\n<p>Em uma tabela de banco de dados relacional, voc\u00ea deve adicionar uma coluna para adicionar um novo campo. Esse n\u00e3o \u00e9 o caso dos campos em um documento JSON. Os campos em um documento JSON podem diferir de documento para documento, ent\u00e3o eles n\u00e3o ser\u00e3o adicionados a cada registro no banco de dados.<\/p>\n<p>Os documentos podem armazenar estruturas como arrays que podem ser aninhadas para expressar relacionamentos hier\u00e1rquicos. Al\u00e9m disso, MongoDB converte documentos em um tipo JSON bin\u00e1rio (BSON). Isso garante acesso mais r\u00e1pido e maior suporte a v\u00e1rios tipos de dados como string, integer, n\u00famero booleano e muito mais!<\/p>\n<h3>Replica sets<\/h3>\n<p>Quando voc\u00ea cria um novo banco de dados no MongoDB, o sistema cria automaticamente pelo menos mais 2 c\u00f3pias de seus dados. Estas c\u00f3pias s\u00e3o conhecidas como \u201c<a href=\"https:\/\/kinsta.com\/pt\/blog\/replica-mongodb\/\">r\u00e9plicas<\/a>\u201d, e elas replicam continuamente os dados entre elas, garantindo uma melhor disponibilidade dos seus dados. Elas tamb\u00e9m oferecem prote\u00e7\u00e3o contra tempo parado durante uma falha do sistema ou manuten\u00e7\u00e3o planejada.<\/p>\n<h3>Cole\u00e7\u00f5es<\/h3>\n<p>Uma cole\u00e7\u00e3o \u00e9 um grupo de documentos associados a um banco de dados, semelhantes a tabelas em bancos de dados relacionais.<\/p>\n<p>As cole\u00e7\u00f5es, no entanto, s\u00e3o muito mais flex\u00edveis. Em primeiro lugar, elas n\u00e3o dependem de um schema. Em segundo lugar, os documentos n\u00e3o precisam ser do mesmo tipo de dados!<\/p>\n<p>Para ver uma lista das cole\u00e7\u00f5es que pertencem a um banco de dados, use o comando <code>listCollections<\/code>.<\/p>\n<h3>Pipelines de agrega\u00e7\u00e3o<\/h3>\n<p>Voc\u00ea pode usar esta estrutura para agrupar v\u00e1rios operadores e express\u00f5es. \u00c9 flex\u00edvel porque permite a voc\u00ea processar, transformar e analisar dados de qualquer estrutura.<\/p>\n<p>Por causa disso, o MongoDB permite fluxos r\u00e1pidos de dados e funcionalidades entre 150 operadores e express\u00f5es. Ele tamb\u00e9m possui v\u00e1rios est\u00e1gios, como o est\u00e1gio Uni\u00e3o, que re\u00fane de forma flex\u00edvel os resultados de m\u00faltiplas cole\u00e7\u00f5es.<\/p>\n<h3>\u00cdndices<\/h3>\n<p>Voc\u00ea pode indexar qualquer campo em um documento MongoDB para aumentar sua efici\u00eancia e melhorar a velocidade da consulta. A indexa\u00e7\u00e3o economiza tempo ao digitalizar o \u00edndice para limitar os documentos inspecionados.<\/p>\n<p>Voc\u00ea pode usar v\u00e1rias estrat\u00e9gias de indexa\u00e7\u00e3o, incluindo \u00edndices compostos em v\u00e1rios campos. Por exemplo, digamos que voc\u00ea tenha v\u00e1rios documentos contendo o primeiro e \u00faltimo nome do funcion\u00e1rio em campos separados. Se voc\u00ea quiser que o primeiro e \u00faltimo nome sejam devolvidos, voc\u00ea pode criar um \u00edndice que inclua tanto \u201cSobrenome\u201d quanto \u201cPrimeiro nome\u201d. Isso seria muito melhor do que ter um \u00edndice em \u201cSobrenome\u201d e outro em \u201cPrimeiro nome\u201d.<\/p>\n<p>Voc\u00ea pode utilizar ferramentas como o Performance Advisor para entender melhor qual consulta pode se beneficiar dos \u00edndices.<\/p>\n<h3>Sharding<\/h3>\n<p>O Sharding distribui um \u00fanico conjunto de dados por v\u00e1rios bancos de dados. Esse conjunto de dados pode ent\u00e3o ser armazenado em m\u00faltiplas m\u00e1quinas para aumentar a capacidade total de armazenamento de um sistema. Isso porque ele divide conjuntos de dados maiores em partes menores e os armazena em v\u00e1rios nodes de dados.<\/p>\n<p>MongoDB fragmenta dados no n\u00edvel de coleta, distribuindo documentos em uma cole\u00e7\u00e3o atrav\u00e9s dos fragmentos em um cluster. Isso assegura a escalabilidade, permitindo que a arquitetura lide com os maiores aplicativos.<\/p>\n<h2>Como criar um banco de dados MongoDB<\/h2>\n<p>Voc\u00ea precisar\u00e1 instalar primeiro o plano MongoDB adequado para o seu sistema operacional. V\u00e1 para a p\u00e1gina &#8216;<a href=\"https:\/\/www.mongodb.com\/try\/download\/community\">Download MongoDB Community Server<\/a>&#8216;. Das op\u00e7\u00f5es dispon\u00edveis, selecione a \u00faltima \u201cvers\u00e3o\u201d, o formato \u201cpacote\u201d como arquivo zip e a \u201cplataforma\u201d como seu sistema operacional e clique em \u201cDownload\u201d, conforme mostrado abaixo:<\/p>\n<figure id=\"attachment_134838\" aria-describedby=\"caption-attachment-134838\" style=\"width: 594px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134838 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Community-Server-Download-Process-1.png\" alt=\"This image depicts the available options- Version, Platform, and Package while downloading MongoDB Community Server.\" width=\"594\" height=\"814\"><figcaption id=\"caption-attachment-134838\" class=\"wp-caption-text\">O processo de download do servidor da comunidade MongoDB (Fonte da imagem: <a href=\"https:\/\/www.mongodb.com\/try\/download\/community2\">MongoDB Community Server<\/a>)<\/figcaption><\/figure>\n<p>O processo \u00e9 bastante simples, ent\u00e3o voc\u00ea ter\u00e1 o MongoDB instalado em seu sistema em pouco tempo!<\/p>\n<p>Ap\u00f3s a conclus\u00e3o da instala\u00e7\u00e3o, verifique abrindo o prompt de comando e digitando <code>mongod -version<\/code>. Se voc\u00ea n\u00e3o obter o resultado a seguir, em vez disso, ver\u00e1 uma s\u00e9rie de erros e talvez seja necess\u00e1rio reinstalar.<\/p>\n<figure id=\"attachment_134839\" aria-describedby=\"caption-attachment-134839\" style=\"width: 507px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134839 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Verifying-MongoDB-Version.png\" alt=\"This is a code snippet to check the MongoDB version after installation.\" width=\"507\" height=\"287\"><figcaption id=\"caption-attachment-134839\" class=\"wp-caption-text\">Verificando a vers\u00e3o MongoDB. (Fonte da imagem: <a href=\"https:\/\/www.configserverfirewall.com\/mongodb\/check-mongodb-version\/\">configserverfirewall<\/a>)<\/figcaption><\/figure>\n<h3>Usando o MongoDB Shell<\/h3>\n<p>Antes de come\u00e7armos, certifique-se:<\/p>\n<ul>\n<li>Seu cliente tem a <span id=\"urn:enhancement-739dad76-25ae-4287-a525-9948131e02a3\" class=\"textannotation selected\">Transport Layer Security<\/span> e est\u00e1 em sua <a href=\"https:\/\/docs.atlas.mongodb.com\/security\/ip-access-list\/\">lista de permiss\u00e3o<\/a> de IP.<\/li>\n<li>Voc\u00ea tem uma conta de usu\u00e1rio e senha no cluster MongoDB desejado.<\/li>\n<li>Voc\u00ea instalou o MongoDB em seu dispositivo.<\/li>\n<\/ul>\n<h4>Passo 1: Acesse a Shell MongoDB<\/h4>\n<p>Inicie o servidor MongoDB seguindo as instru\u00e7\u00f5es espec\u00edficas de cada sistema operacional. Para Windows, digite o seguinte comando. Para outros sistemas operacionais, consulte a documenta\u00e7\u00e3o do MongoDB.<\/p>\n<pre><code class=\"language-markdown\">net start MongoDB<\/code><\/pre>\n<p>Isso deve dar o seguinte resultado:<\/p>\n<figure id=\"attachment_134840\" aria-describedby=\"caption-attachment-134840\" style=\"width: 512px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134840\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Server-Initialization.png\" alt=\"This is a code snippet to initialize the MongoDB server\" width=\"512\" height=\"179\"><figcaption id=\"caption-attachment-134840\" class=\"wp-caption-text\">Executando o servidor MongoDB. (Fonte da imagem: <a href=\"https:\/\/www.c-sharpcorner.com\/article\/configure-a-windows-service-for-mongodb\/\">c-sharpcorner<\/a>)<\/figcaption><\/figure>\n<p>O comando anterior inicializou o servidor MongoDB. Para execut\u00e1-lo, ter\u00edamos que digitar <code>mongo<\/code> no prompt de comando.<\/p>\n<figure id=\"attachment_134843\" aria-describedby=\"caption-attachment-134843\" style=\"width: 897px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134843\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Running-MongoDB-Server-2.png\" alt=\"This is a code snippet to run the MongoDB server.\" width=\"897\" height=\"343\"><figcaption id=\"caption-attachment-134843\" class=\"wp-caption-text\">Executando o shell MongoDB. (Fonte da imagem: <a href=\"https:\/\/www.bmc.com\/blogs\/mongodb-create-database\/\">bmc<\/a>)<\/figcaption><\/figure>\n<p>Ao contr\u00e1rio dos bancos de dados relacionais comuns, o MongoDB n\u00e3o possui um comando de cria\u00e7\u00e3o de banco de dados.<\/p>\n<h4>Passo 2: Crie seu banco de dados<\/h4>\n<p>Ao contr\u00e1rio do SQL, MongoDB n\u00e3o tem um comando de cria\u00e7\u00e3o de banco de dados. Ao inv\u00e9s disso, existe uma palavra-chave chamada <code>use<\/code> que muda para um banco de dados especificado. Se o banco de dados n\u00e3o existir, ele ir\u00e1 criar um novo banco de dados, caso contr\u00e1rio, ele ir\u00e1 conectar ao banco de dados existente.<\/p>\n<p>Por exemplo, para iniciar um banco de dados chamado \u201cCompany\u201d, digite:<\/p>\n<pre><code class=\"language-markdown\">use Company<\/code><\/pre>\n<figure id=\"attachment_134845\" aria-describedby=\"caption-attachment-134845\" style=\"width: 1378px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134845\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Creating-Database-in-MongoDB-1.png\" alt=\"This is a code snippet to create a database in MongoDB.\" width=\"1378\" height=\"547\"><figcaption id=\"caption-attachment-134845\" class=\"wp-caption-text\">Criando banco de dados no MongoDB.<\/figcaption><\/figure>\n<p>Voc\u00ea pode digitar <code>db<\/code> para confirmar o banco de dados que voc\u00ea acabou de criar em seu sistema.<\/p>\n<p>Se voc\u00ea quiser verificar os bancos de dados existentes, digite <code>show dbs<\/code> e ele mostrar\u00e1 todos os bancos de dados do seu sistema:<\/p>\n<figure id=\"attachment_134847\" aria-describedby=\"caption-attachment-134847\" style=\"width: 1369px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134847\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Show-Databases-in-MongoDB-1.png\" alt=\"This is a code snippet to view the existing databases in the system.\" width=\"1369\" height=\"489\"><figcaption id=\"caption-attachment-134847\" class=\"wp-caption-text\">Visualiza\u00e7\u00e3o de bancos de dados em MongoDB.<\/figcaption><\/figure>\n<p>Por padr\u00e3o, a instala\u00e7\u00e3o do MongoDB cria os bancos de dados admin, config e local.<\/p>\n<p>Voc\u00ea notou que o banco de dados que criamos n\u00e3o est\u00e1 sendo exibido? Isso ocorre porque ainda n\u00e3o salvamos nenhum valor no banco de dados! Discutiremos a inser\u00e7\u00e3o na se\u00e7\u00e3o de gerenciamento do banco de dados.<\/p>\n<h3>Usando o Atlas UI<\/h3>\n<p>Voc\u00ea tamb\u00e9m pode come\u00e7ar com o servi\u00e7o de banco de dados da MongoDB, Atlas. Embora voc\u00ea precise pagar para acessar algumas funcionalidades do Atlas, a maioria das funcionalidades do banco de dados est\u00e3o dispon\u00edveis gratuitamente. As funcionalidades gratuitas s\u00e3o mais do que suficientes para criar um banco de dados MongoDB.<\/p>\n<p>Antes de come\u00e7armos, certifique-se:<\/p>\n<ol>\n<li>Seu IP est\u00e1 na lista de permiss\u00f5es.<\/li>\n<li>Voc\u00ea tem uma conta de usu\u00e1rio e senha no cluster MongoDB que voc\u00ea deseja usar.<\/li>\n<\/ol>\n<p>Para criar um banco de dados MongoDB com a Atlas UI, abra uma janela do navegador e fa\u00e7a o login em <a href=\"https:\/\/cloud.mongodb.com\/\">https:\/\/cloud.mongodb.com<\/a>. A partir da sua p\u00e1gina de cluster, clique em <strong>Browse Collections<\/strong>. Caso n\u00e3o tenha bancos de dados no cluster, voc\u00ea pode criar seu banco de dados clicando no bot\u00e3o <strong>Add My Own Data<\/strong>.<\/p>\n<p>O prompt ir\u00e1 pedir que voc\u00ea forne\u00e7a um banco de dados e um nome de cole\u00e7\u00e3o. Uma vez que voc\u00ea os tenha nomeado, clique em <strong>Create<\/strong>\u00a0e pronto! Agora voc\u00ea pode inserir novos documentos ou conectar-se ao banco de dados usando drivers.<\/p>\n<h2>Gerenciando seu banco de dados MongoDB<\/h2>\n<p>Nesta se\u00e7\u00e3o, veremos algumas maneiras interessantes de gerenciar efetivamente seu banco de dados MongoDB. Voc\u00ea pode fazer isso usando o MongoDB Compass ou atrav\u00e9s de cole\u00e7\u00f5es.<\/p>\n<h3>Usando cole\u00e7\u00f5es<\/h3>\n<p>Enquanto bancos de dados relacionais possuem tabelas bem definidas com tipos de dados e colunas especificados, o NoSQL possui cole\u00e7\u00f5es em vez de tabelas. Essas cole\u00e7\u00f5es n\u00e3o t\u00eam nenhuma estrutura e os documentos podem variar \u2014 voc\u00ea pode ter diferentes tipos de dados e campos sem precisar corresponder ao formato de outro documento na mesma cole\u00e7\u00e3o.<\/p>\n<p>Para demonstrar, criaremos uma cole\u00e7\u00e3o chamada \u201cFuncion\u00e1rio\u201d e adicionaremos um documento a ela:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {\n   \t\"Employeename\" : \"Chris\",\n   \t\"EmployeeDepartment\" : \"Sales\"\n  }\n)<\/code><\/pre>\n<p>Caso a inser\u00e7\u00e3o seja bem-sucedida, ela retornar\u00e1 <code>WriteResult({ \"nInserted\" : 1 })<\/code>:<\/p>\n<figure id=\"attachment_134848\" aria-describedby=\"caption-attachment-134848\" style=\"width: 1366px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134848\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Successful-Insertion-in-MongoDB.png\" alt=\"This code snippet returns WriteResult({ \" width=\"1366\" height=\"484\"><figcaption id=\"caption-attachment-134848\" class=\"wp-caption-text\">Inser\u00e7\u00e3o bem-sucedida no MongoDB.<\/figcaption><\/figure>\n<p>Aqui, \u201cdb\u201d se refere ao banco de dados atualmente conectado. \u201cEmployee\u201d \u00e9\u00a0a nova cole\u00e7\u00e3o criada no banco de dados da empresa.<\/p>\n<p>N\u00e3o definimos uma chave prim\u00e1ria aqui porque o MongoDB cria automaticamente um campo chave-prim\u00e1rio chamado \u201c_id\u201d e define um valor padr\u00e3o para ele.<\/p>\n<p>Execute o comando abaixo para verificar a cole\u00e7\u00e3o no formato JSON:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.find().forEach(printjson)<\/code><\/pre>\n<p>Sa\u00edda:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"_id\" : ObjectId(\"63151427a4dd187757d135b8\"),\n  \"Employeename\" : \"Chris\",\n  \"EmployeeDepartment\" : \"Sales\"\n}<\/code><\/pre>\n<div class=\"group w-full text-gray-800 dark:text-gray-100 border-b border-black\/10 dark:border-gray-900\/50 bg-gray-50 dark:bg-[#444654]\">\n<div class=\"text-base gap-4 md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0 m-auto\">\n<div class=\"relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]\">\n<div class=\"flex flex-grow flex-col gap-3\">\n<div class=\"min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap\">\n<div class=\"markdown prose w-full break-words dark:prose-invert dark\">\n<p>Embora o valor &#8220;_id&#8221; seja atribu\u00eddo automaticamente, voc\u00ea pode alterar o valor da chave prim\u00e1ria padr\u00e3o. Desta vez, vamos inserir outro documento no banco de dados &#8220;Employee&#8221;, com o valor &#8220;_id&#8221; como &#8220;1&#8221;:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"flex justify-between lg:block\">\n<div class=\"text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-2 md:gap-3 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {  \n   \t\"_id\" : 1,\n   \t\"EmployeeName\" : \"Ava\",\n   \t\"EmployeeDepartment\" : \"Public Relations\"\n  }\n)<\/code><\/pre>\n<p>Ao executar o comando <code>db.Employee.find().forEach(printjson)<\/code> obtemos o seguinte resultado:<\/p>\n<figure id=\"attachment_134851\" aria-describedby=\"caption-attachment-134851\" style=\"width: 1764px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134851\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/Primary-Key-for-Documents-in-Collection-1.png\" alt=\"The output shows the documents in the Employee collection along with their primary key\" width=\"1764\" height=\"694\"><figcaption id=\"caption-attachment-134851\" class=\"wp-caption-text\">Documentos na cole\u00e7\u00e3o com sua chave prim\u00e1ria<\/figcaption><\/figure>\n<p>Na sa\u00edda acima, o valor \u201c_id\u201d para \u201cAva\u201d \u00e9 definido como \u201c1&#8243; ao inv\u00e9s de ser atribu\u00eddo um valor automaticamente.<\/p>\n<p>Agora que adicionamos valores ao banco de dados com sucesso, podemos verificar se ele aparece sob os bancos de dados existentes em nosso sistema usando o seguinte comando:<\/p>\n<pre><code class=\"language-markdown\">show dbs<\/code><\/pre>\n<figure id=\"attachment_134852\" aria-describedby=\"caption-attachment-134852\" style=\"width: 1714px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-134852\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/List-of-Databases.png\" alt=\"The output shows the Employee collection in the existing databases in our system.\" width=\"1714\" height=\"460\"><figcaption id=\"caption-attachment-134852\" class=\"wp-caption-text\">Exibindo a lista de bancos de dados<\/figcaption><\/figure>\n<p>E pronto! Voc\u00ea criou com sucesso um banco de dados em seu sistema!<\/p>\n<h3>Usando o MongoDB Compass<\/h3>\n<p>Embora seja poss\u00edvel trabalhar com servidores MongoDB a partir do shell do Mongo, isso pode ser tedioso \u00e0s vezes. Voc\u00ea pode experimentar isso em um ambiente de produ\u00e7\u00e3o.<\/p>\n<p>No entanto, h\u00e1 uma ferramenta chamada Compass (adequadamente nomeada) criada pela MongoDB que pode tornar tudo mais f\u00e1cil. Ele tem uma interface gr\u00e1fica de usu\u00e1rio melhor e funcionalidades adicionais como visualiza\u00e7\u00e3o de dados, perfis de desempenho e acesso CRUD (criar, ler, atualizar e excluir) a dados, bancos de dados e cole\u00e7\u00f5es.<\/p>\n<p>Voc\u00ea pode baixar o <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/install\/\">Compass IDE<\/a> para o seu sistema operacional e instal\u00e1-lo facilmente.<\/p>\n<p>Em seguida, abra o aplicativo e crie uma conex\u00e3o com o servidor, colando a string de conex\u00e3o. Caso voc\u00ea n\u00e3o consiga encontr\u00e1-la, voc\u00ea pode clicar em <strong>Fill in connection fields individually<\/strong>. Se voc\u00ea n\u00e3o alterou o n\u00famero da porta durante a instala\u00e7\u00e3o do MongoDB, basta clicar no bot\u00e3o connect, e voc\u00ea est\u00e1 pronto! Caso contr\u00e1rio, basta digitar os valores que voc\u00ea definiu e clicar em <strong>Connect<\/strong>.<\/p>\n<figure id=\"attachment_134854\" aria-describedby=\"caption-attachment-134854\" style=\"width: 1384px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134854 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/10\/New-Connection-Window-in-MongoDB-1.png\" alt=\"This image shows the New Connection window, where you can choose to paste the connection url.\" width=\"1384\" height=\"535\"><figcaption id=\"caption-attachment-134854\" class=\"wp-caption-text\">Nova janela de conex\u00e3o em MongoDB. (Fonte da imagem: <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/connect\/\">mongodb<\/a>)<\/figcaption><\/figure>\n<p>Em seguida, forne\u00e7a o nome do host, a porta e a autentica\u00e7\u00e3o na janela New Connection.<\/p>\n<p>No MongoDB Compass, voc\u00ea pode criar um banco de dados e adicionar sua primeira cole\u00e7\u00e3o simultaneamente:<\/p>\n<ol>\n<li>Clique em <strong>Create Database <\/strong>para abrir o prompt.<\/li>\n<li>Digite o nome do banco de dados e sua primeira cole\u00e7\u00e3o.<\/li>\n<li>Clique em <strong>Create Database<\/strong>.<\/li>\n<\/ol>\n<p>Voc\u00ea pode inserir mais documentos no seu banco de dados clicando no nome do seu banco de dados, e depois clicando no nome da cole\u00e7\u00e3o para ver a aba <strong>Documents<\/strong>. Voc\u00ea pode ent\u00e3o clicar no bot\u00e3o <strong>Add Data<\/strong>\u00a0para inserir um ou mais documentos em sua cole\u00e7\u00e3o.<\/p>\n<p>Ao adicionar seus documentos, voc\u00ea pode inseri-los um de cada vez ou como v\u00e1rios documentos em uma array. Se estiver adicionando v\u00e1rios documentos, certifique-se de que esses documentos separados por v\u00edrgula estejam dentro de colchetes. Por exemplo:<\/p>\n<pre><code class=\"language-markdown\">{ _id: 1, item: { name: \"apple\", code: \"123\" }, qty: 15, tags: [ \"A\", \"B\", \"C\" ] },\n{ _id: 2, item: { name: \"banana\", code: \"123\" }, qty: 20, tags: [ \"B\" ] },\n{ _id: 3, item: { name: \"spinach\", code: \"456\" }, qty: 25, tags: [ \"A\", \"B\" ] },\n{ _id: 4, item: { name: \"lentils\", code: \"456\" }, qty: 30, tags: [ \"B\", \"A\" ] },\n{ _id: 5, item: { name: \"pears\", code: \"000\" }, qty: 20, tags: [ [ \"A\", \"B\" ], \"C\" ] },\n{ _id: 6, item: { name: \"strawberry\", code: \"123\" }, tags: [ \"B\" ] }<\/code><\/pre>\n<p>Finalmente, clique em <strong>Insert<\/strong>\u00a0para adicionar os documentos \u00e0 sua cole\u00e7\u00e3o. Este \u00e9 o aspecto do corpo de um documento:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"StudentID\" : 1\n  \"StudentName\" : \"JohnDoe\"\n}<\/code><\/pre>\n<p>Aqui, os nomes dos campos s\u00e3o \u201cStudentID\u201d e \u201cStudentName\u201d. Os valores dos campos s\u00e3o \u201c1\u201d e \u201cJohnDoe\u201d, respectivamente.<\/p>\n<h3>Comandos \u00fateis<\/h3>\n<p>Voc\u00ea pode gerenciar essas cole\u00e7\u00f5es por comandos de gerenciamento de fun\u00e7\u00f5es e de gerenciamento de usu\u00e1rios.<\/p>\n<h4>Comandos de gerenciamento de usu\u00e1rios<\/h4>\n<p>Os comandos de gerenciamento de usu\u00e1rios do MongoDB cont\u00eam comandos que pertencem ao usu\u00e1rio. Podemos criar, atualizar e excluir os usu\u00e1rios usando estes comandos.<\/p>\n<h5>dropUser<\/h5>\n<p>Este comando remove um \u00fanico usu\u00e1rio do banco de dados especificado. Abaixo est\u00e1 a sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.dropUser(username, writeConcern)<\/code><\/pre>\n<p>Aqui, o campo <code>username<\/code> \u00e9 obrigat\u00f3rio e especifica o nome do usu\u00e1rio a ser removido do banco de dados. O campo opcional <code>writeConcern<\/code>\u00a0cont\u00e9m o n\u00edvel de preocupa\u00e7\u00e3o com a escrita para a opera\u00e7\u00e3o de remo\u00e7\u00e3o. O n\u00edvel de Concern de escrita pode ser determinado pelo campo opcional <code>writeConcern<\/code>.<\/p>\n<p>Antes de excluir um usu\u00e1rio que tenha a fun\u00e7\u00e3o <code>userAdminAnyDatabase<\/code>, certifique-se de que haja pelo menos outro usu\u00e1rio com privil\u00e9gios de administra\u00e7\u00e3o de usu\u00e1rios.<\/p>\n<p>Neste exemplo, deixaremos o usu\u00e1rio \u201cusu\u00e1rio26\u201d no banco de dados de teste:<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000})<\/code><\/pre>\n<p>Sa\u00edda:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000});\ntrue<\/code><\/pre>\n<h5>createUser<\/h5>\n<p>Este comando cria um novo usu\u00e1rio para o banco de dados especificado como a seguir:<\/p>\n<pre><code class=\"language-markdown\">db.createUser(user, writeConcern)<\/code><\/pre>\n<p>Aqui, <code>user<\/code> \u00e9 um campo obrigat\u00f3rio que cont\u00e9m o documento com autentica\u00e7\u00e3o e informa\u00e7\u00f5es de acesso sobre o usu\u00e1rio a ser criado. O campo opcional <code>writeConcern<\/code> cont\u00e9m o n\u00edvel de Concern de escrita para a opera\u00e7\u00e3o de cria\u00e7\u00e3o. O n\u00edvel de Concern de escrita pode ser determinado pelo campo opcional, <code>writeConcern<\/code>.<\/p>\n<p><code>createUser<\/code> retornar\u00e1 um erro de usu\u00e1rio duplicado se o usu\u00e1rio j\u00e1 existir no banco de dados.<\/p>\n<p>Voc\u00ea pode criar um novo usu\u00e1rio no banco de dados de teste da seguinte forma:<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.createUser(\n  {\n    user: \"user26\",\n    pwd: \"myuser123\",\n    roles: [ \"readWrite\" ]  \n  }\n);<\/code><\/pre>\n<p>A sa\u00edda \u00e9 a seguinte:<\/p>\n<pre><code class=\"language-markdown\">Successfully added user: { \"user\" : \"user26\", \"roles\" : [ \"readWrite\", \"dbAdmin\" ] }<\/code><\/pre>\n<h5>grantRolesToUser<\/h5>\n<p>Voc\u00ea pode usar este comando para conceder fun\u00e7\u00f5es adicionais para um usu\u00e1rio. Para us\u00e1-lo, voc\u00ea precisa ter em mente a seguinte sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToUser: \"&lt;user&gt;\",\n    roles: [ &lt;roles&gt; ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Voc\u00ea pode especificar tanto fun\u00e7\u00f5es definidas pelo usu\u00e1rio quanto fun\u00e7\u00f5es incorporadas nas fun\u00e7\u00f5es mencionadas acima. Se voc\u00ea deseja especificar uma fun\u00e7\u00e3o que existe no mesmo banco de dados onde a fun\u00e7\u00e3o <code>grantRolesToUser<\/code>\u00a0\u00e9 executada, voc\u00ea pode especificar a fun\u00e7\u00e3o com um documento, conforme mencionado abaixo:<\/p>\n<pre><code class=\"language-markdown\">{ role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" }<\/code><\/pre>\n<p>Ou, voc\u00ea pode simplesmente especificar a fun\u00e7\u00e3o com o nome da fun\u00e7\u00e3o. Por exemplo:<\/p>\n<pre><code class=\"language-markdown\">\"readWrite\"<\/code><\/pre>\n<p>Se voc\u00ea quiser especificar a fun\u00e7\u00e3o que est\u00e1 presente em um banco de dados diferente, voc\u00ea ter\u00e1 que especificar a fun\u00e7\u00e3o com um documento diferente.<\/p>\n<p>Para conceder uma fun\u00e7\u00e3o em um banco de dados, voc\u00ea precisa da a\u00e7\u00e3o <code>grantRole<\/code> no banco de dados especificado.<\/p>\n<p>Aqui est\u00e1 um exemplo para lhe dar uma imagem clara. Pegue, por exemplo, um produto do usu\u00e1rioUser00 no banco de dados de produtos com as seguintes fun\u00e7\u00f5es:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  }\n]<\/code><\/pre>\n<p>A opera\u00e7\u00e3o <code>grantRolesToUser<\/code> fornece ao \u201cproductUser00\u201d a fun\u00e7\u00e3o <code>readWrite<\/code> no banco de dados de estoque e a fun\u00e7\u00e3o de leitura no banco de dados de produtos:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand({\n  grantRolesToUser: \"productUser00\",\n  roles: [\n    { role: \"readWrite\", db: \"stock\"},\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 2000 }\n})<\/code><\/pre>\n<p>Agora, o usu\u00e1rio productUser00 no banco de dados de produtos possui as seguintes fun\u00e7\u00f5es:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<h5>usersInfo<\/h5>\n<p>Voc\u00ea pode usar o comando <code>usersInfo<\/code> para retornar informa\u00e7\u00f5es sobre um ou mais usu\u00e1rios. Aqui est\u00e1 a sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo: &lt;various&gt;,\n    showCredentials: &lt;Boolean&gt;,\n    showCustomData: &lt;Boolean&gt;,\n    showPrivileges: &lt;Boolean&gt;,\n    showAuthenticationRestrictions: &lt;Boolean&gt;,\n    filter: &lt;document&gt;,\n    comment: &lt;any&gt; \n  }\n)\n{ usersInfo: &lt;various&gt; }<\/code><\/pre>\n<p>Em termos de acesso, os usu\u00e1rios podem sempre olhar para suas pr\u00f3prias informa\u00e7\u00f5es. Para olhar as informa\u00e7\u00f5es de outro usu\u00e1rio, o usu\u00e1rio que executa o comando deve ter privil\u00e9gios que incluem a a\u00e7\u00e3o <code>viewUser<\/code> no banco de dados do outro usu\u00e1rio.<\/p>\n<p>Ao executar o comando <code>userInfo<\/code>, voc\u00ea pode obter as seguintes informa\u00e7\u00f5es, dependendo das op\u00e7\u00f5es especificadas:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"users\" : [\n    {\n      \"_id\" : \"&lt;db&gt;.&lt;username&gt;\",\n      \"userId\" : &lt;UUID&gt;, \/\/ Starting in MongoDB 4.0.9\n      \"user\" : \"&lt;username&gt;\",\n      \"db\" : \"&lt;db&gt;\",\n      \"mechanisms\" : [ ... ],  \/\/ Starting in MongoDB 4.0\n      \"customData\" : &lt;document&gt;,\n      \"roles\" : [ ... ],\n      \"credentials\": { ... }, \/\/ only if showCredentials: true\n      \"inheritedRoles\" : [ ... ],  \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedPrivileges\" : [ ... ], \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedAuthenticationRestrictions\" : [ ] \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"authenticationRestrictions\" : [ ... ] \/\/ only if showAuthenticationRestrictions: true\n    },\n  ],\n  \"ok\" : 1\n} <\/code><\/pre>\n<p>Agora que voc\u00ea tem uma ideia geral do que \u00e9 poss\u00edvel realizar com o comando <code>usersInfo<\/code>, a pr\u00f3xima pergunta que pode surgir \u00e9: quais comandos s\u00e3o \u00fateis para visualizar usu\u00e1rios espec\u00edficos e m\u00faltiplos usu\u00e1rios?<\/p>\n<p>Aqui est\u00e3o dois exemplos pr\u00e1ticos para ilustrar o mesmo:<br \/>\nPara olhar os privil\u00e9gios e informa\u00e7\u00f5es espec\u00edficas para usu\u00e1rios espec\u00edficos, mas n\u00e3o as credenciais, para um usu\u00e1rio \u201cAnthony\u201d definido no banco de dados do \u201coffice\u201d, execute o seguinte comando:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo:  { user: \"Anthony\", db: \"office\" },\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>Se voc\u00ea quiser olhar para um usu\u00e1rio no banco de dados atual, voc\u00ea s\u00f3 pode mencionar o usu\u00e1rio pelo nome. Por exemplo, se voc\u00ea est\u00e1 no banco de dados home e um usu\u00e1rio chamado \u201cTimothy\u201d existe no banco de dados home, voc\u00ea pode executar o seguinte comando:<\/p>\n<pre><code class=\"language-markdown\">db.getSiblingDB(\"home\").runCommand(\n  {\n    usersInfo:  \"Timothy\",\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>A seguir, voc\u00ea pode usar um array se voc\u00ea desejar olhar as informa\u00e7\u00f5es para v\u00e1rios usu\u00e1rios. Voc\u00ea pode incluir os campos opcionais <code>showCredentials<\/code> e <code>showPrivileges<\/code>, ou voc\u00ea pode optar por deix\u00e1-los de fora. Isso \u00e9 o que o comando pareceria:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand({\nusersInfo: [ { user: \"Anthony\", db: \"office\" }, { user: \"Timothy\", db: \"home\" } ],\n  showPrivileges: true\n})<\/code><\/pre>\n<h5>revokeRolesFromUser<\/h5>\n<p>Voc\u00ea pode aproveitar o comando <code>revokeRolesFromUser<\/code> para remover uma ou mais fun\u00e7\u00f5es de um usu\u00e1rio no banco de dados onde as fun\u00e7\u00f5es est\u00e3o presentes. O comando <code>revokeRolesFromUser<\/code> tem a seguinte sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokeRolesFromUser: \"&lt;user&gt;\",\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Na sintaxe mencionada acima, voc\u00ea pode especificar tanto as fun\u00e7\u00f5es definidas pelo usu\u00e1rio quanto as fun\u00e7\u00f5es incorporadas no campo <code>roles<\/code>. Similar ao comando <code>grantRolesToUser<\/code>, voc\u00ea pode especificar a fun\u00e7\u00e3o que voc\u00ea deseja revogar em um documento ou usar seu nome.<\/p>\n<p>Para executar com sucesso o comando <code>revokeRolesFromUser<\/code>, voc\u00ea precisa ter a a\u00e7\u00e3o <code>revokeRole<\/code> no banco de dados especificado.<\/p>\n<p>Aqui est\u00e1 um exemplo para deixar isso mais claro. A entidade <code>productUser00<\/code> no banco de dados \u201cproducts\u201d tinha as seguintes fun\u00e7\u00f5es:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<p>O seguinte comando <code>revokeRolesFromUser<\/code> ir\u00e1 remover duas das fun\u00e7\u00f5es do usu\u00e1rio: a fun\u00e7\u00e3o \u201cread\u201d de <code>products<\/code> e a fun\u00e7\u00e3o <code>assetsWriter<\/code> do banco de dados de \u201cassets\u201d:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand( { revokeRolesFromUser: \"productUser00\",\n  roles: [\n    { role: \"AssetsWriter\", db: \"assets\" },\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" }\n} )<\/code><\/pre>\n<p>O usu\u00e1rio \u201cproductUser00\u201d no banco de dados de produtos agora tem apenas uma fun\u00e7\u00e3o restante:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  }\n]<\/code><\/pre>\n<h4>Comandos de gerenciamento de fun\u00e7\u00f5es<\/h4>\n<p>As fun\u00e7\u00f5es garantem aos usu\u00e1rios acesso aos recursos. V\u00e1rias fun\u00e7\u00f5es integradas podem ser usadas por administradores para controlar o acesso a um sistema MongoDB. Se as fun\u00e7\u00f5es n\u00e3o cobrem os privil\u00e9gios desejados, voc\u00ea pode criar novas fun\u00e7\u00f5es em um banco de dados espec\u00edfico.<\/p>\n<h5>dropRole<\/h5>\n<p>Com o comando <code>dropRole<\/code>, voc\u00ea pode excluir uma fun\u00e7\u00e3o definida pelo usu\u00e1rio do banco de dados no qual voc\u00ea executa o comando. Para executar este comando, use a seguinte sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    dropRole: \"&lt;role&gt;\",\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Para uma execu\u00e7\u00e3o bem-sucedida, voc\u00ea deve ter a a\u00e7\u00e3o <code>dropRole<\/code> no banco de dados especificado. As seguintes opera\u00e7\u00f5es removeriam a fun\u00e7\u00e3o <code>writeTags<\/code> do banco de dados de \u201cproducts\u201d:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  {\n    dropRole: \"writeTags\",\n    writeConcern: { w: \"majority\" }\n  }\n)<\/code><\/pre>\n<h5>createRole<\/h5>\n<p>Voc\u00ea pode usar o comando <code>createRole<\/code> para criar uma fun\u00e7\u00e3o e especificar seus privil\u00e9gios. Essa fun\u00e7\u00e3o ser\u00e1 aplicada ao banco de dados no qual voc\u00ea escolher executar o comando. Caso a fun\u00e7\u00e3o j\u00e1 exista no banco de dados, o comando <code>createRole<\/code> retornar\u00e1 um erro de fun\u00e7\u00e3o duplicada.<\/p>\n<p>Para executar este comando, siga a sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand(\n  {\n    createRole: \"&lt;new role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    authenticationRestrictions: [\n      {\n        clientSource: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...],\n        serverAddress: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...]\n      },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Os privil\u00e9gios de uma fun\u00e7\u00e3o se aplicariam ao banco de dados onde a fun\u00e7\u00e3o foi criada. A fun\u00e7\u00e3o pode herdar privil\u00e9gios de outras fun\u00e7\u00f5es em seu banco de dados. Por exemplo, uma fun\u00e7\u00e3o feita no banco de dados \u201cadmin\u201d pode incluir privil\u00e9gios que se aplicam ou a um cluster, ou a todos os bancos de dados. Ela tamb\u00e9m pode herdar privil\u00e9gios de fun\u00e7\u00f5es presentes em outros bancos de dados.<\/p>\n<p>Para criar uma fun\u00e7\u00e3o em um banco de dados, voc\u00ea precisa ter duas coisas:<\/p>\n<ol>\n<li>A a\u00e7\u00e3o <code>grantRole<\/code> nesse banco de dados para mencionar privil\u00e9gios para a nova fun\u00e7\u00e3o, assim como para mencionar fun\u00e7\u00f5es a serem herdadas.<\/li>\n<li>A a\u00e7\u00e3o <code>createRole<\/code> no recurso do banco de dados.<\/li>\n<\/ol>\n<p>O seguinte comando <code>createRole<\/code> ir\u00e1 criar uma fun\u00e7\u00e3o <code>clusterAdmin<\/code> no banco de dados do usu\u00e1rio:<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand({ createRole: \"clusterAdmin\",\n  privileges: [\n    { resource: { cluster: true }, actions: [ \"addShard\" ] },\n    { resource: { db: \"config\", collection: \"\" }, actions: [ \"find\", \"remove\" ] },\n    { resource: { db: \"users\", collection: \"usersCollection\" }, actions: [ \"update\", \"insert\" ] },\n    { resource: { db: \"\", collection: \"\" }, actions: [ \"find\" ] }\n  ],\n  roles: [\n    { role: \"read\", db: \"user\" }\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 5000 }\n})<\/code><\/pre>\n<h5>grantRolesToRole<\/h5>\n<p>Com o comando <code>grantRolesToRole<\/code>, voc\u00ea pode conceder fun\u00e7\u00f5es, uma fun\u00e7\u00e3o definida pelo usu\u00e1rio. O comando <code>grantRolesToRole<\/code> afetaria as fun\u00e7\u00f5es no banco de dados onde o comando \u00e9 executado.<\/p>\n<p>Este comando <code>grantRolesToRole<\/code> tem a seguinte sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToRole: \"&lt;role&gt;\",\n    roles: [\n     { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" },\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Os privil\u00e9gios de acesso s\u00e3o similares ao comando <code>grantRolesToUser<\/code> \u2014 voc\u00ea precisa de uma a\u00e7\u00e3o <code>grantRole<\/code> em um banco de dados para a execu\u00e7\u00e3o correta do comando.<\/p>\n<p>No exemplo a seguir, voc\u00ea pode usar o comando <code>grantRolesToRole<\/code>\u00a0para atualizar a fun\u00e7\u00e3o <code>productsReader<\/code> no banco de dados \u201cproducts\u201d para herdar os privil\u00e9gios da fun\u00e7\u00e3o <code>productsWriter<\/code>:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  { \n    grantRolesToRole: \"productsReader\",\n    roles: [\n      \"productsWriter\"\n    ],\n    writeConcern: { w: \"majority\" , wtimeout: 5000 }\n  }\n)<\/code><\/pre>\n<h5>revokePrivilegesFromRole<\/h5>\n<p>Voc\u00ea pode usar <code>revokePrivilegesFromRole<\/code> para remover os privil\u00e9gios especificados da fun\u00e7\u00e3o definida pelo usu\u00e1rio no banco de dados onde o comando \u00e9 executado. Para a execu\u00e7\u00e3o correta, voc\u00ea precisa ter em mente a seguinte sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"&lt;role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Para revogar um privil\u00e9gio, o padr\u00e3o \u201cresource document\u201d deve corresponder com o campo \u201cresource\u201d desse privil\u00e9gio. O campo \u201cactions\u201d pode ser uma correspond\u00eancia exata ou um subconjunto.<\/p>\n<p>Por exemplo, considere a fun\u00e7\u00e3o <code>manageRole<\/code> no banco de dados de produtos com os seguintes privil\u00e9gios que especificam o banco de dados de \u201cmanagers\u201d como o recurso:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"resource\" : {\n    \"db\" : \"managers\",\n    \"collection\" : \"\"\n  },\n  \"actions\" : [\n    \"insert\",\n    \"remove\"\n  ]\n}<\/code><\/pre>\n<p>Voc\u00ea n\u00e3o pode revogar as a\u00e7\u00f5es de \u201cinsert\u201d ou \u201cremove\u201d de apenas uma cole\u00e7\u00e3o no banco de dados dos gerenciadores. As seguintes opera\u00e7\u00f5es n\u00e3o causam nenhuma altera\u00e7\u00e3o na fun\u00e7\u00e3o:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges: [\n      {\n        resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\",\n          \"remove\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>Para revogar as a\u00e7\u00f5es de \u201cinsert\u201d e\/ou \u201cremove\u201d da fun\u00e7\u00e3o <code>manageRole<\/code>, voc\u00ea precisa corresponder exatamente ao documento do recurso. Por exemplo, a seguinte opera\u00e7\u00e3o revoga apenas a a\u00e7\u00e3o \u201cremove\u201d do privil\u00e9gio existente:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n            db : \"managers\",\n            collection : \"\"\n        },\n        actions : [ \"remove\" ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>A seguinte opera\u00e7\u00e3o remover\u00e1 m\u00faltiplos privil\u00e9gios da fun\u00e7\u00e3o \u201cexecutive\u201d no banco de dados de gerenciadores:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"executive\",\n    privileges: [\n      {\n        resource: { db: \"managers\", collection: \"\" },\n        actions: [ \"insert\", \"remove\", \"find\" ]\n      },\n      {\n        resource: { db: \"managers\", collection: \"partners\" },\n        actions: [ \"update\" ]\n      }\n    ],\n    writeConcern: { w: \"majority\" }\n    }\n)<\/code><\/pre>\n<h5>rolesInfo<\/h5>\n<p>O comando <code>rolesInfo<\/code> retornar\u00e1 informa\u00e7\u00f5es de privil\u00e9gios e heran\u00e7a para fun\u00e7\u00f5es espec\u00edficas, incluindo fun\u00e7\u00f5es integradas e definidas pelo usu\u00e1rio. Tamb\u00e9m \u00e9 poss\u00edvel usar o comando\u00a0<code>rolesInfo<\/code> para recuperar todas as fun\u00e7\u00f5es que possuem escopo para um banco de dados.<\/p>\n<p>Para uma execu\u00e7\u00e3o adequada, siga esta sintaxe:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: { role: &lt;name&gt;, db: &lt;db&gt; },\n    showPrivileges: &lt;Boolean&gt;,\n    showBuiltinRoles: &lt;Boolean&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Para retornar informa\u00e7\u00f5es para uma fun\u00e7\u00e3o do banco de dados atual, voc\u00ea pode especificar seu nome da seguinte forma:<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: \"&lt;rolename&gt;\" }<\/code><\/pre>\n<p>Para retornar informa\u00e7\u00f5es para uma fun\u00e7\u00e3o de outro banco de dados, voc\u00ea pode mencionar a fun\u00e7\u00e3o com um documento que menciona a fun\u00e7\u00e3o e o banco de dados:<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" } }<\/code><\/pre>\n<p>Por exemplo, o comando a seguir retorna as informa\u00e7\u00f5es de heran\u00e7a de fun\u00e7\u00f5es para o executivo da fun\u00e7\u00e3o definida no banco de dados de &#8220;managers&#8221;:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: { role: \"executive\", db: \"managers\" }\n   }\n)<\/code><\/pre>\n<p>Este pr\u00f3ximo comando ir\u00e1 retornar as informa\u00e7\u00f5es de heran\u00e7a de fun\u00e7\u00f5es: <code>accountManager<\/code> no banco de dados no qual o comando \u00e9 executado:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: \"accountManager\"\n   }\n)<\/code><\/pre>\n<p>O seguinte comando devolver\u00e1 tanto os privil\u00e9gios quanto a heran\u00e7a de fun\u00e7\u00f5es para \u201cexecutive\u201d, conforme definido no banco de dados dos managers:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n     rolesInfo: { role: \"executive\", db: \"managers\" },\n     showPrivileges: true\n   }\n)<\/code><\/pre>\n<p>Para mencionar v\u00e1rias fun\u00e7\u00f5es, voc\u00ea pode usar um array. Voc\u00ea tamb\u00e9m pode mencionar cada fun\u00e7\u00e3o no array como uma string ou documento.<\/p>\n<p>Voc\u00ea deve usar uma string somente se a fun\u00e7\u00e3o existir no banco de dados no qual o comando \u00e9 executado:<\/p>\n<pre><code class=\"language-markdown\">{\n  rolesInfo: [\n    \"&lt;rolename&gt;\",\n    { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" },\n  ]\n}<\/code><\/pre>\n<p>Por exemplo, o seguinte comando ir\u00e1 retornar informa\u00e7\u00f5es para tr\u00eas fun\u00e7\u00f5es em tr\u00eas bancos de dados diferentes:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ]\n  }\n)<\/code><\/pre>\n<p>Voc\u00ea pode obter tanto os privil\u00e9gios quanto a heran\u00e7a de fun\u00e7\u00f5es da seguinte forma:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ],\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<h2>Incorporando documentos MongoDB para um melhor desempenho<\/h2>\n<p>Bancos de dados de documentos, como o MongoDB, permitem que voc\u00ea defina seu schema de acordo com suas necessidades. Para criar schemas otimizados no MongoDB, \u00e9 poss\u00edvel aninhar os documentos. Dessa forma, em vez de adaptar seu aplicativo a um modelo de dados, voc\u00ea pode construir um modelo de dados que corresponda ao seu caso de uso.<\/p>\n<p>Documentos incorporados permitem que voc\u00ea <a href=\"https:\/\/kinsta.com\/pt\/blog\/mysql-backup-database\/\">armazene dados relacionados<\/a> que s\u00e3o acessados juntos. Ao projetar schemas para MongoDB, \u00e9 recomendado que voc\u00ea incorpore documentos por padr\u00e3o. Use jun\u00e7\u00f5es e refer\u00eancias do lado do banco de dados ou do aplicativo somente quando forem necess\u00e1rias.<\/p>\n<p>Certifique-se de que o carregamento de trabalho possa recuperar um documento com a frequ\u00eancia necess\u00e1ria. Ao mesmo tempo, o documento tamb\u00e9m deve ter todos os dados de que precisa. Isso \u00e9 fundamental para o desempenho excepcional do seu aplicativo.<\/p>\n<p>Abaixo, voc\u00ea encontrar\u00e1 alguns padr\u00f5es diferentes para incorporar documentos:<\/p>\n<h3>Padr\u00e3o de documento incorporado<\/h3>\n<p>Voc\u00ea pode usar isso para incorporar at\u00e9 mesmo sub-estruturas complicadas nos documentos com os quais eles s\u00e3o usados. Incorporar dados conectados em um \u00fanico documento pode diminuir o n\u00famero de opera\u00e7\u00f5es de leitura necess\u00e1rias para obter dados. Geralmente, voc\u00ea deve estruturar seu schema de forma que seu aplicativo receba todas as informa\u00e7\u00f5es necess\u00e1rias em uma \u00fanica opera\u00e7\u00e3o de leitura. Portanto, a regra \u00e9: <strong>o que \u00e9 usado em conjunto deve ser armazenado em conjunto<\/strong>.<\/p>\n<h3>Padr\u00e3o de subconjunto incorporado<\/h3>\n<p>O padr\u00e3o do subconjunto incorporado \u00e9 um caso h\u00edbrido. Voc\u00ea o usaria para uma cole\u00e7\u00e3o separada de uma longa lista de itens relacionados, onde alguns desses itens podem ser mantidos no documento principal para facilitar a exibi\u00e7\u00e3o.<\/p>\n<p>Aqui est\u00e1 um exemplo que lista as cr\u00edticas de filmes:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne()\n{   \n  _id: 321475,   \n  title: \"The Dark Knight\"\n}  \n&gt; db.review.find({movie_id: 321475})\n{   \n  _id: 264579,   \n  movie_id: 321475,   \n  stars: 4   \n  text: \"Amazing\"   \n}\n{   \n  _id: 375684,   \n  movie_id: 321475,   \n  stars:5,   \n  text: \"Mindblowing\"\n}<\/code><\/pre>\n<p>Agora, imagine mil cr\u00edticas semelhantes, mas voc\u00ea planeja exibir apenas as duas mais recentes quando voc\u00ea mostrar um filme. Neste cen\u00e1rio, faz sentido armazenar esse subconjunto como uma lista no documento do filme:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 321475})   \n{   \n  _id: 321475,   \n  title: \"The Dark Knight\",   \n  recent_reviews: [   \n    {_id: 264579, stars: 4, text: \"Amazing\"},   \n    {_id: 375684, stars: 5, text: \"Mindblowing\"}   \n  ]   \n}&lt;\/code<\/code><\/pre>\n<p>Em outras palavras, se voc\u00ea acessa rotineiramente um subconjunto de itens relacionados, certifique-se de incorpor\u00e1-los.<\/p>\n<h3>Acesso independente<\/h3>\n<p>Armazenar subdocumentos em sua pr\u00f3pria cole\u00e7\u00e3o pode ser uma boa ideia para separ\u00e1-los da cole\u00e7\u00e3o principal.<\/p>\n<p>Por exemplo, considere a linha de produtos de uma empresa. Se a empresa vende um pequeno conjunto de produtos, voc\u00ea pode querer armazen\u00e1-los no documento da empresa. Mas se voc\u00ea quiser reutiliz\u00e1-los em outras empresas ou acess\u00e1-los diretamente pelo seu n\u00famero de identifica\u00e7\u00e3o de estoque (SKU), tamb\u00e9m pode querer armazen\u00e1-los em uma cole\u00e7\u00e3o separada.<\/p>\n<p>Se voc\u00ea manipula ou acessa uma entidade independentemente, \u00e9 uma boa pr\u00e1tica armazen\u00e1-la em uma cole\u00e7\u00e3o separada.<\/p>\n<h3>Listas ilimitadas<\/h3>\n<p>Armazenar listas curtas de informa\u00e7\u00f5es relacionadas em um \u00fanico documento pode ter uma desvantagem. Se a lista continuar crescendo sem controle, voc\u00ea n\u00e3o deveria coloc\u00e1-la em um \u00fanico documento. Isso ocorre porque voc\u00ea n\u00e3o conseguir\u00e1 suport\u00e1-la por muito tempo.<\/p>\n<p>Existem duas raz\u00f5es para isso. Primeiro, o MongoDB tem um limite no tamanho de um \u00fanico documento. Segundo, se voc\u00ea acessar o documento com muita frequ\u00eancia, ver\u00e1 resultados negativos do uso de mem\u00f3ria descontrolado.<\/p>\n<p>Em resumo, se uma lista come\u00e7ar a crescer ilimitadamente, crie uma cole\u00e7\u00e3o para armazen\u00e1-la separadamente.<\/p>\n<h3>Padr\u00e3o de refer\u00eancia estendido<\/h3>\n<p>O padr\u00e3o de refer\u00eancia estendido \u00e9 como o padr\u00e3o do subconjunto. Ele tamb\u00e9m otimiza as informa\u00e7\u00f5es que voc\u00ea acessa regularmente para armazenar no documento.<\/p>\n<p>Aqui, em vez de uma lista, ele \u00e9 usado quando um documento se refere a outro que est\u00e1 presente na mesma cole\u00e7\u00e3o. Ao mesmo tempo, ele tamb\u00e9m armazena alguns campos desse outro documento para acesso r\u00e1pido.<\/p>\n<p>Por exemplo:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 245434})\n{   \n  _id: 245434,   \n  title: \"Mission Impossible 4 - Ghost Protocol\",   \n  studio_id: 924935,   \n  studio_name: \"Paramount Pictures\"   \n}<\/code><\/pre>\n<p>Como voc\u00ea pode ver, \u201co studio_id\u201d \u00e9 armazenado para que voc\u00ea possa procurar mais informa\u00e7\u00f5es sobre o est\u00fadio que criou o filme. Mas o nome do est\u00fadio tamb\u00e9m \u00e9 copiado para este documento por simplicidade.<\/p>\n<p>Para incorporar informa\u00e7\u00f5es de documentos modificados regularmente, lembre-se de atualizar documentos onde voc\u00ea copiou essa informa\u00e7\u00e3o quando ela for modificada. Em outras palavras, se voc\u00ea acessar rotineiramente alguns campos de um documento referenciado, incorpore-os.<\/p>\n<h2>Como monitorar o MongoDB<\/h2>\n<p>Voc\u00ea pode usar <a href=\"https:\/\/kinsta.com\/pt\/blog\/apm-ferramentas\/\">ferramentas de monitoramento<\/a> como o <a href=\"https:\/\/kinsta.com\/pt\/ferramenta-apm\/\">Kinsta APM<\/a> para depurar longas chamadas API, consultas lentas a bancos de dados, longas solicita\u00e7\u00f5es externas de URL, entre outras. Voc\u00ea tamb\u00e9m pode aproveitar comandos para melhorar o desempenho do banco de dados. Voc\u00ea tamb\u00e9m pode us\u00e1-los para inspecionar o <a href=\"https:\/\/kinsta.com\/pt\/blog\/solucionar-reparar-problemas-banco-dados\/\">sa\u00fade das inst\u00e2ncias do seu banco de dados<\/a>.<\/p>\n<h3>Por que voc\u00ea deve monitorar os bancos de dados MongoDB?<\/h3>\n<p>Um aspecto chave do <a href=\"https:\/\/kinsta.com\/pt\/mykinsta\/\">planejamento da administra\u00e7\u00e3o do banco de dados<\/a> \u00e9 monitorar o desempenho e a sa\u00fade do seu cluster. O MongoDB Atlas lida com a maioria dos esfor\u00e7os de administra\u00e7\u00e3o atrav\u00e9s de suas habilidades de toler\u00e2ncia a falhas\/escala.<\/p>\n<p>Apesar disso, os usu\u00e1rios precisam saber como rastrear os clusters. Eles tamb\u00e9m devem saber como escalar ou ajustar o que precisam antes de atingir uma crise.<\/p>\n<p>Ao monitorar o banco de dados MongoDB, voc\u00ea pode:<\/p>\n<ul>\n<li>Observar a utiliza\u00e7\u00e3o dos recursos.<\/li>\n<li>Compreender a capacidade atual do seu banco de dados.<\/li>\n<li>Detectar problemas em tempo real para aprimorar seus aplicativos.<\/li>\n<li>Observar a presen\u00e7a de problemas de desempenho e comportamento anormal.<\/li>\n<li>Alinhar-se com seus requisitos de governan\u00e7a\/ prote\u00e7\u00e3o de dados e acordo de n\u00edvel de servi\u00e7o (SLA).<\/li>\n<\/ul>\n<h3>Principais m\u00e9tricas a serem monitoradas<\/h3>\n<p>Ao monitorar o MongoDB, existem quatro aspectos-chave que voc\u00ea precisa ter em mente:<\/p>\n<h4>M\u00e9tricas de hardware do MongoDB<\/h4>\n<p>Aqui est\u00e3o as principais m\u00e9tricas para monitorar o hardware:<\/p>\n<h5>CPU de processo normalizado<\/h5>\n<p>\u00c9 definida como a porcentagem de tempo gasto pela CPU no software de aplicativo mantendo o processo do MongoDB.<\/p>\n<p>Voc\u00ea pode escalar isso para um intervalo de 0-100% dividindo pelo n\u00famero de n\u00facleos de CPU. Isso inclui a CPU usada por m\u00f3dulos como kernel e usu\u00e1rio.<\/p>\n<p>CPU de alto kernel pode mostrar exaust\u00e3o da CPU atrav\u00e9s das opera\u00e7\u00f5es do sistema operacional. Mas o usu\u00e1rio ligado \u00e0s opera\u00e7\u00f5es do MongoDB pode ser a causa raiz da exaust\u00e3o da CPU.<\/p>\n<h5>CPU do sistema normalizado<\/h5>\n<p>\u00c9 a porcentagem de tempo que a CPU gastou em chamadas de sistema, atendendo a este processo do MongoDB. Voc\u00ea pode dimension\u00e1-la para uma faixa de 0-100% dividindo pelo n\u00famero de n\u00facleos de CPU. Tamb\u00e9m inclui a CPU usada por m\u00f3dulos como iowait, usu\u00e1rio, kernel, steal, etc.<\/p>\n<p>A CPU do usu\u00e1rio ou o alto kernel pode mostrar exaust\u00e3o da CPU atrav\u00e9s de opera\u00e7\u00f5es MongoDB (software). Alto iowait pode estar ligado \u00e0 exaust\u00e3o do armazenamento causando a exaust\u00e3o da CPU.<\/p>\n<h5>IOPS do disco<\/h5>\n<p>IOPS (Input\/Output Operations Per Second) do disco \u00e9 a m\u00e9dia de opera\u00e7\u00f5es de E\/S (entrada\/sa\u00edda) consumidas por segundo na parti\u00e7\u00e3o de disco do MongoDB.<\/p>\n<h5>Lat\u00eancia do disco<\/h5>\n<p>Esta \u00e9 a lat\u00eancia do disco de leitura e grava\u00e7\u00e3o da parti\u00e7\u00e3o em milissegundos em MongoDB. Valores altos (&gt;500ms) mostram que a camada de armazenamento pode afetar o desempenho do MongoDB.<\/p>\n<h5>Mem\u00f3ria do sistema<\/h5>\n<p>Use a mem\u00f3ria do sistema para descrever os bytes de mem\u00f3ria f\u00edsica usados vs o espa\u00e7o livre dispon\u00edvel.<\/p>\n<p>A m\u00e9trica dispon\u00edvel aproxima o n\u00famero de bytes de mem\u00f3ria do sistema dispon\u00edvel. Voc\u00ea pode us\u00e1-lo para executar novas aplica\u00e7\u00f5es sem precisar usar a mem\u00f3ria virtual.<\/p>\n<h5>Espa\u00e7o em disco livre<\/h5>\n<p>Isso \u00e9 definido como o total de bytes de espa\u00e7o livre em disco na parti\u00e7\u00e3o de disco do MongoDB. O MongoDB Atlas fornece capacidades escal\u00e1veis com base nessa m\u00e9trica.<\/p>\n<h5>Uso de Swap<\/h5>\n<p>Voc\u00ea pode aproveitar um gr\u00e1fico de uso de swap para descrever quanta mem\u00f3ria est\u00e1 sendo colocada no dispositivo de swap. Uma alta m\u00e9trica usada neste gr\u00e1fico mostra que o swap est\u00e1 sendo utilizado. Isso mostra que a mem\u00f3ria est\u00e1 sendo sub-provisionada para a carga de trabalho atual.<\/p>\n<h4>M\u00e9tricas de conex\u00e3o e opera\u00e7\u00e3o do cluster do MongoDB<\/h4>\n<p>Aqui est\u00e3o as principais m\u00e9tricas de opera\u00e7\u00e3o e de conex\u00e3o:<\/p>\n<h5>Tempos de execu\u00e7\u00e3o de opera\u00e7\u00e3o<\/h5>\n<p>O tempo m\u00e9dio de opera\u00e7\u00e3o (opera\u00e7\u00f5es de escrita e leitura) realizado durante o per\u00edodo de amostra selecionado.<\/p>\n<h5>Opcounters<\/h5>\n<p>\u00c9 a taxa m\u00e9dia de opera\u00e7\u00f5es executadas por segundo durante o per\u00edodo de amostra selecionado. O gr\u00e1fico\/m\u00e9trica de Opcounters mostra a distribui\u00e7\u00e3o de opera\u00e7\u00f5es por tipo e velocidade para a inst\u00e2ncia.<\/p>\n<h5>Conex\u00f5es<\/h5>\n<p>Esta m\u00e9trica se refere ao n\u00famero de conex\u00f5es abertas para a inst\u00e2ncia. Picos ou n\u00fameros altos podem apontar para uma estrat\u00e9gia de conex\u00e3o sub\u00f3tima tanto do lado do servidor n\u00e3o responsivo quanto do lado do cliente.<\/p>\n<h5>Query Targeting e Query Executors<\/h5>\n<p>Esta \u00e9 a taxa m\u00e9dia por segundo durante o per\u00edodo de amostra selecionada de documentos digitalizados. Para os executores de consultas, isso \u00e9 durante a avalia\u00e7\u00e3o do plano de consultas e consultas. O objetivo da consulta mostra a rela\u00e7\u00e3o entre o n\u00famero de documentos escaneados e o n\u00famero de documentos devolvidos.<\/p>\n<p>Uma alta rela\u00e7\u00e3o de n\u00famero de pontos para opera\u00e7\u00f5es sub\u00f3timas. Estas opera\u00e7\u00f5es digitalizam muitos documentos para devolver uma parte menor.<\/p>\n<h5>Digitaliza\u00e7\u00e3o e Encomenda<\/h5>\n<p>Ele descreve a taxa m\u00e9dia por segundo ao longo do per\u00edodo de consultas escolhido. Ele retorna resultados ordenados que n\u00e3o podem executar a opera\u00e7\u00e3o de ordena\u00e7\u00e3o usando um \u00edndice.<\/p>\n<h5>Filas<\/h5>\n<p>As filas podem descrever o n\u00famero de opera\u00e7\u00f5es \u00e0 espera de um cadeado, seja para escrever ou para ler. Filas altas podem retratar a exist\u00eancia de menos do que um projeto de esquema ideal. Tamb\u00e9m pode indicar caminhos de escrita conflitantes, empurrando a alta competi\u00e7\u00e3o sobre os recursos do banco de dados.<\/p>\n<h4>M\u00e9tricas de replica\u00e7\u00e3o MongoDB<\/h4>\n<p>Aqui est\u00e3o as principais m\u00e9tricas para o monitoramento da replica\u00e7\u00e3o:<\/p>\n<h5>Replication Oplog Window<\/h5>\n<p>Esta m\u00e9trica lista o n\u00famero aproximado de horas dispon\u00edveis no oplog de replica\u00e7\u00e3o do prim\u00e1rio. Se um secund\u00e1rio ficar para tr\u00e1s mais do que essa quantidade, ele n\u00e3o conseguir\u00e1 acompanhar e precisar\u00e1 de uma ressincroniza\u00e7\u00e3o completa.<\/p>\n<h5>Replication Lag<\/h5>\n<p>O atraso de replica\u00e7\u00e3o \u00e9 definido como o n\u00famero aproximado de segundos em que um n\u00f3 secund\u00e1rio est\u00e1 atrasado em rela\u00e7\u00e3o ao prim\u00e1rio em opera\u00e7\u00f5es de grava\u00e7\u00e3o. Um alto atraso de replica\u00e7\u00e3o indicaria que um secund\u00e1rio enfrenta dificuldades na replica\u00e7\u00e3o. Isso pode impactar a lat\u00eancia de suas opera\u00e7\u00f5es, considerando a preocupa\u00e7\u00e3o de leitura\/grava\u00e7\u00e3o das conex\u00f5es.<\/p>\n<h5>Replication Headroom<\/h5>\n<p>Essa m\u00e9trica refere-se \u00e0 diferen\u00e7a entre a janela do oplog de replica\u00e7\u00e3o prim\u00e1rio e o atraso de replica\u00e7\u00e3o do secund\u00e1rio. Se esse valor for a zero, pode fazer com que um secund\u00e1rio entre no modo RECOVERING.<\/p>\n<h5>Opcounters &#8211; repl<\/h5>\n<p>Opcounters &#8211; repl \u00e9 definido como a taxa m\u00e9dia de opera\u00e7\u00f5es de replica\u00e7\u00e3o executadas por segundo durante o per\u00edodo de amostra selecionado. Com a opcounters &#8211; gr\u00e1fico\/m\u00e9trica, voc\u00ea pode dar uma olhada na velocidade das opera\u00e7\u00f5es e na distribui\u00e7\u00e3o dos tipos de opera\u00e7\u00f5es para a inst\u00e2ncia especificada.<\/p>\n<h5>Oplog GB\/Hour<\/h5>\n<p>Isso \u00e9 definido como a taxa m\u00e9dia de gigabytes de oplog que o prim\u00e1rio gera por hora. Altos volumes inesperados de oplog podem apontar para uma carga de trabalho de grava\u00e7\u00e3o altamente insuficiente ou um problema de design de esquema.<\/p>\n<h3>Ferramentas de monitoramento de desempenho MongoDB<\/h3>\n<p>O MongoDB possui ferramentas de interface do usu\u00e1rio integradas no Cloud Manager, Atlas e Ops Manager para rastreamento de desempenho. Ele tamb\u00e9m fornece alguns comandos e ferramentas independentes para visualizar dados mais baseados em dados brutos. Vamos falar sobre algumas ferramentas que voc\u00ea pode executar a partir de um host que tenha acesso e fun\u00e7\u00f5es apropriadas para verificar seu ambiente:<\/p>\n<h4>mongotop<\/h4>\n<p>Voc\u00ea pode aproveitar este comando para rastrear que tempo uma inst\u00e2ncia do MongoDB gasta escrevendo e lendo dados por cole\u00e7\u00e3o. Use a seguinte sintaxe:<\/p>\n<pre><code class=\"language-markdown\">mongotop &lt;options&gt; &lt;connection-string&gt; &lt;polling-interval in seconds&gt;<\/code><\/pre>\n<h4>rs.status()<\/h4>\n<p>Este comando retorna o status da r\u00e9plica definida. Ele \u00e9 executado do ponto de vista do membro onde o m\u00e9todo \u00e9 executado.<\/p>\n<h4>mongostat<\/h4>\n<p>Voc\u00ea pode usar o comando <code>mongostat<\/code> para obter uma vis\u00e3o r\u00e1pida do status da sua inst\u00e2ncia do servidor MongoDB. Para uma sa\u00edda ideal, voc\u00ea pode us\u00e1-lo para monitorar uma \u00fanica inst\u00e2ncia para um evento espec\u00edfico, pois oferece uma visualiza\u00e7\u00e3o em tempo real.<\/p>\n<p>Aproveite este comando para monitorar estat\u00edsticas b\u00e1sicas do servidor, como filas de bloqueio, distribui\u00e7\u00e3o de opera\u00e7\u00f5es, estat\u00edsticas de mem\u00f3ria do MongoDB e conex\u00f5es\/rede:<\/p>\n<pre><code class=\"language-markdown\">mongostat &lt;options&gt; &lt;connection-string&gt; &lt;polling interval in seconds&gt;<\/code><\/pre>\n<h4>dbStats<\/h4>\n<p>Este comando retorna estat\u00edsticas de armazenamento para um banco de dados espec\u00edfico, tais como o n\u00famero de \u00edndices e seu tamanho, dados totais de coleta vs tamanho de armazenamento e estat\u00edsticas relacionadas \u00e0 coleta (n\u00famero de cole\u00e7\u00f5es e documentos).<\/p>\n<h4>db.serverStatus()<\/h4>\n<p>Voc\u00ea pode aproveitar o comando <code>db.serverStatus()<\/code> para ter uma vis\u00e3o geral do estado do banco de dados. Ele lhe d\u00e1 um documento representando os contadores de m\u00e9tricas da inst\u00e2ncia atual. Execute este comando em intervalos regulares para comparar estat\u00edsticas sobre a inst\u00e2ncia.<\/p>\n<h4>colStats<\/h4>\n<p>O comando <code>collStats<\/code> coleta estat\u00edsticas\u00a0semelhantes \u00e0s oferecidas pelo <code>dbStats<\/code> no n\u00edvel de coleta. Sua sa\u00edda consiste em uma contagem de objetos na cole\u00e7\u00e3o, a quantidade de espa\u00e7o em disco consumida pela cole\u00e7\u00e3o, o tamanho da cole\u00e7\u00e3o e informa\u00e7\u00f5es relativas a seus \u00edndices para uma determinada cole\u00e7\u00e3o.<\/p>\n<p>Voc\u00ea pode usar todos esses comandos para oferecer relat\u00f3rios e monitoramento em tempo real do servidor de banco de dados, permitindo que voc\u00ea monitore o desempenho e os erros do banco de dados e ajude na tomada de decis\u00f5es informadas para refinar um banco de dados.<\/p>\n<h2>Como excluir um banco de dados MongoDB<\/h2>\n<p>Para excluir um banco de dados que voc\u00ea criou no MongoDB, voc\u00ea precisa se conectar a ele por meio da palavra-chave &#8220;use&#8221;.<\/p>\n<p>Digamos que voc\u00ea criou um banco de dados chamado \u201cEngineers\u201d. Para se conectar ao banco de dados, voc\u00ea usar\u00e1 o seguinte comando:<\/p>\n<pre><code class=\"language-markdown\">use Engineers<\/code><\/pre>\n<p>Em seguida, digite <code>db.dropDatabase()<\/code> para excluir deste banco de dados. Ap\u00f3s a execu\u00e7\u00e3o, este \u00e9 o resultado que voc\u00ea pode esperar:<\/p>\n<pre><code class=\"language-markdown\">{ \"dropped\"  :  \"Engineers\", \"ok\" : 1 }<\/code><\/pre>\n<p>Voc\u00ea pode executar o comando <code>showdbs<\/code> para verificar se o banco de dados ainda existe.<\/p>\n<h2>Resumo<\/h2>\n<p>Para extrair o m\u00e1ximo de valor do MongoDB, \u00e9 fundamental ter uma compreens\u00e3o s\u00f3lida dos fundamentos. Por isso, \u00e9 crucial conhecer os bancos de dados do MongoDB como a palma da sua m\u00e3o. Isso requer familiariza\u00e7\u00e3o com os m\u00e9todos para <a href=\"https:\/\/kinsta.com\/pt\/devkinsta\/\">criar um banco de dados<\/a> primeiro.<\/p>\n<p><br \/>\nNeste artigo, esclarecemos os diferentes m\u00e9todos que voc\u00ea pode usar para criar um banco de dados no MongoDB, seguido por uma descri\u00e7\u00e3o detalhada de alguns comandos \u00fateis do MongoDB para manter o controle dos seus bancos de dados. Finalmente, encerramos a discuss\u00e3o falando como voc\u00ea pode aproveitar documentos incorporados e ferramentas de monitoramento de desempenho no MongoDB para garantir que seu fluxo de trabalho funcione com efici\u00eancia m\u00e1xima.<\/p>\n<p>Qual \u00e9 a sua opini\u00e3o sobre esses comandos do MongoDB? Deixamos de fora algum aspecto ou m\u00e9todo que voc\u00ea gostaria de ver aqui? Deixe-nos saber nos coment\u00e1rios!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Com base nos requisitos do seu software, voc\u00ea pode priorizar flexibilidade, escalabilidade, desempenho ou velocidade. Por isso, desenvolvedores e empresas muitas vezes ficam confusos ao escolher &#8230;<\/p>\n","protected":false},"author":117,"featured_media":54801,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[219,736,528,44],"topic":[1018],"class_list":["post-54800","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-database","tag-mongodb","tag-web-developement","tag-webdev","topic-ferramentas-desenvolvimento-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber<\/title>\n<meta name=\"description\" content=\"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber\" \/>\n<meta property=\"og:description\" content=\"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-08T08:52:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-17T13:43:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salman Ravoof\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"33 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber\",\"datePublished\":\"2022-11-08T08:52:37+00:00\",\"dateModified\":\"2025-01-17T13:43:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\"},\"wordCount\":6668,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png\",\"keywords\":[\"database\",\"MongoDB\",\"web developement\",\"webdev\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\",\"name\":\"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png\",\"datePublished\":\"2022-11-08T08:52:37+00:00\",\"dateModified\":\"2025-01-17T13:43:59+00:00\",\"description\":\"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ferramentas de Desenvolvimento Web\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/ferramentas-desenvolvimento-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"caption\":\"Salman Ravoof\"},\"description\":\"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.\",\"sameAs\":[\"https:\/\/salmanravoof.com\",\"https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/\",\"https:\/\/x.com\/salmanravoof\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber","description":"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/","og_locale":"pt_PT","og_type":"article","og_title":"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber","og_description":"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.","og_url":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2022-11-08T08:52:37+00:00","article_modified_time":"2025-01-17T13:43:59+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png","twitter_creator":"@salmanravoof","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Salman Ravoof","Tempo estimado de leitura":"33 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber","datePublished":"2022-11-08T08:52:37+00:00","dateModified":"2025-01-17T13:43:59+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/"},"wordCount":6668,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png","keywords":["database","MongoDB","web developement","webdev"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/","url":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/","name":"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png","datePublished":"2022-11-08T08:52:37+00:00","dateModified":"2025-01-17T13:43:59+00:00","description":"Para obter uma compreens\u00e3o melhor do MongoDB, \u00e9 preciso saber como criar bancos de dados no MongoDB, come\u00e7ando com o comando Create Database do MongoDB.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/mongodb-create-database.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-mongodb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Ferramentas de Desenvolvimento Web","item":"https:\/\/kinsta.com\/pt\/topicos\/ferramentas-desenvolvimento-web\/"},{"@type":"ListItem","position":3,"name":"Como Criar um Banco de Dados MongoDB: 6 Aspectos Cr\u00edticos que Voc\u00ea Precisa Saber"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","caption":"Salman Ravoof"},"description":"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.","sameAs":["https:\/\/salmanravoof.com","https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/","https:\/\/x.com\/salmanravoof"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/54800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=54800"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/54800\/revisions"}],"predecessor-version":[{"id":60537,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/54800\/revisions\/60537"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/translations\/dk"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54800\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/54801"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=54800"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=54800"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=54800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}