MongoDB – Estruturas Lógicas: Database, Collection, Document
- Postado por Adriano Bonacin
- Categorias mongodb
- Data 11/01/2022
- Comentários 0 comentário
Vamos seguir mais um pouco? No nosso último post falamos da instalação e subimos nosso primeiro MongoDB. A lista de todos os artigos você pode encontrar aqui, no nosso primeiro post da série. Agora chegou a hora de ver como as coisas se dividem no MongoDB. Vamos detalhar o que é cada uma dessas estruturas lógicas: database, collection e document. A documentação oficial você pode encontrar aqui.
Listando e trocando de DB
Voltando a nossa primeira conexão no post anterior, no banco test. Por enquanto vamos ingnorar tudo que ele printa na tela e vamos focar nos comandos. Primeiro, vamos ver quais bancos “existem”.
test> show dbs;
admin 41 kB
config 73.7 kB
local 41 kB
test> show databases;
admin 41 kB
config 73.7 kB
local 41 kB
Note que tanto “show dbs” ou “show databases” vai nos mostrar o que desejamos. Mas que curioso, estamos conectados no banco “test” e ele nem existe? É isso mesmo, ele ainda não existe e para o MongoDB está tudo OK. Se a gente criar alguma coisa nele, o DB será criado automaticamente.
Se você conhece outros SGDBs, o database no MongoDB se assemelha ao database do MySQL, MSSQL, do schema do Oracle, da keyspace do Cassandra. Usamos para isolar uma app de outra. Vamos olhar o DB com mais carinho. Se você quiser trocar o DB de trabalho no mongosh, basta utilizar “use meudb”. Entao vamos seguir nesta linha.
test> use yadax
switched to db yadax
yadax> show dbs
admin 41 kB
config 111 kB
local 41 kB
Veja que não criamos o banco yadax e de fato ele ainda não existe (por enquanto). A próxima estrutura que vamos olhar é a collection, que se assemelha com as tabelas nos outros DBs tradicionais. Elas também são criadas automaticamente quando você insere o primeiro documento.
Só para recapitular: ao inserir um documento cria-se a collection. Ao criar a collection, cria-se o DB.Então para criar tudo que preciso é só inserir um documento? Exato! Só que inserir um documento no MongoDB não é tão simples. Aliás, é simples. Mas diferente da forma como fazemos nos outros DBs.
Criando um document + collection + DB
Veja só como podemos fazer a criação do combo inteiro em um só comando.
yadax> db.clientes.insertOne({'nome': 'Adriano Bonacin'})
{
acknowledged: true,
insertedId: ObjectId("61d72fc5222d2ee4efa32ed9")
}
yadax>
Nessa hora acontecem algumas coisas “por baixo dos panos” e no log a gente pode ver a criação da Collection e de um Index:
{"t":{"$date":"2022-01-06T18:07:01.499+00:00"},"s":"I", "c":"STORAGE", "id":20320, "ctx":"conn19","msg":"createCollection","attr":{"namespace":"yadax.clientes","uuidDisposition":"generated","uuid":{"uuid":{"$uuid":"2a3a80d7-7587-4fd8-9c99-f98f1da88e74"}},"options":{}}}
{"t":{"$date":"2022-01-06T18:07:01.518+00:00"},"s":"I", "c":"INDEX", "id":20345, "ctx":"conn19","msg":"Index build: done building","attr":{"buildUUID":null,"namespace":"yadax.clientes","index":"_id_","commitTimestamp":null}}
{"t":{"$date":"2022-01-06T18:07:01.499+00:00"},"s":"I", "c":"STORAGE", "id":20320, "ctx":"conn19","msg":"createCollection","attr":{"namespace":"yadax.clientes","uuidDisposition":"generated","uuid":{"uuid":{"$uuid":"2a3a80d7-7587-4fd8-9c99-f98f1da88e74"}},"options":{}}}
{"t":{"$date":"2022-01-06T18:07:01.518+00:00"},"s":"I", "c":"INDEX", "id":20345, "ctx":"conn19","msg":"Index build: done building","attr":{"buildUUID":null,"namespace":"yadax.clientes","index":"_id_","commitTimestamp":null}}
Ao listar os DBs, agora podemos ver o DB yadax.
yadax> show dbs
admin 41 kB
config 111 kB
local 41 kB
yadax 41 kB
Notou como a sintaxe é diferente? O começo é um pouco estranho, mas depois vai que vai. Por hora, vamos finalizar nossa análise olhando para os documentos. Eles são semelhantes aos “registros” dos bancos tradicionais. Olhando com carinho para um doc, vemos que eles começam e terminam por chaves {}.
Entre as chaves, temos pares key/value (chave/valor) separados por vírgula. A “key” sempre será string, pode conter números e underscore, mas lembre-se que quanto mais simples, melhor. Para o valor, temos varias opções. Pode ser um número, uma string, uma lista, um outro doc.
Coisas importantes a saber: o MongoDB sempre vai ter uma chave “_id” que será a PK da nossa collection. E você também não precisa se preocupar em populá-lo, embora seja permitido. No momento do insert esse _id é informado (insertedId: ObjectId(“61d72fc5222d2ee4efa32ed9”)).
No próximo artigo vamos explorar um pouquinho mais como funciona essa “linguagem diferente” do mongosh. Até lá.
Tag:mongodb