Tabela de Conteúdos
- Estrutura do MongoDB
- Bancos de Dados
- Coleções
- Documentos
- Regras
InsertOne
InsertMany
Find
- Operadores de Comparação
- Links Úteis
Estrutura do MongoDB
Classe
O que é?
Apesar de serem englobados dentro de um mesmo escopo, os banco de dados NoSQL possuem diferentes tipos de armazenamento, em outras palavras, são de classes diferentes.
Document
Não iremos abordar todos os tipo de classe NoSQL aqui, iremos focar apenas na classe do MongoDB, Document.
A classe Document é a mais flexível dentre todas, seu formato de armazenamento é similar ao JSON, no MongoDB por exemplo, esse formato é chamado de BSON. De forma prática iremos armazenar os dados no formato de um "Objeto JavaScript", onde temos chave:valor
, sendo que cada valor poderá conter outro objeto e assim sucessivamente.
Qual é?
A estrutura "interna" do MongoDB consiste em três partes, que serão explicadas logo abaixo, são elas: os Bancos de Dados, as Coleções e os Documentos.
Bancos de Dados
O que são?
Assim como em DB relacionais, os NoSQL podem possuir mais de um banco de dados cada, ou seja, é onde iremos armazenar as Coleções.
A maior diferença entre Bancos de Dados SQL e MongoDB (além do funcionamento interno) é a capacidade de se "auto criar" um novo Banco de Dados conforme a necessidade, ou seja, ao realizarmos uma operação em um Banco de Dados que ainda não existe, ele será criado de forma automática para nós, incluindo a operação que acabamos de fazer.
Coleções
O que são?
Fazendo um paralelo aos DB relacionais, as Coleções seriam equivalentes as Tabelas, que por sua vez seriam responsáveis por armazenar Documentos.
Documentos
O que são?
São equivalentes as entidades de um DB relacional, o que seria armazenado em uma linha da Tabela, irá ser armazenado como um objeto BSON dentro da Coleção.
Regras
O que são?
São restrições aplicadas a criação de Tables/Collections e inserção de dados através de Entity/Document.
SQL x MongoDB
Diferente de Tabelas e Entidades dos bancos de dados relacionais, as Coleções e Documentos de um banco de dados como o MongoDB podem ser completamente livres de regras, logo podemos ter dentro de uma mesma Coleção, Documentos com estruturas extremamente diferentes.
Apesar de isso ser possível e não gerar nenhum tipo de erro interno no DB, ainda temos a opção de "regrar" a criação de Documentos, sendo que essa regra deverá ocorrer em nível de Documento e não de Coleção.
Obs: Podemos aplicar regras em níveis de Coleção, porém caso já existam Documentos salvos, as regras podem impactá-los.
Regrando
Para adicionar as restrições na criação de um novo documento utilizamos o Schema Validation
, recurso nativo do MongoDB, esse que não será abordado aqui, porém a documentação é bem didática em sua explicação.
Documentação - Schema Validation
InsertOne()
O que é?
É um comando do MongoDB que permite a inserção de um novo Documento a uma Coleção, essa que não precisa existir previamente.
Sintaxe
A sintaxe desse comando é, de certa forma, similar a do JavaScript, mas não se engane, é um comando para ser utilizado no mongo shell (mongosh).
Para executarmos esse comando precisamos ter previamente selecionado um banco de dados do MongoDB, após isso utilizamos a palavra reservada db
, seguida da Coleção a receber o Documento e por fim o comando insertOne()
recebendo por parâmetro, em forma de Objeto (JSON), as informações do Documento.
use <nome do banco de dados>
db.<nome da coleção>.insertOne({ });
use my-database
db.user.insertOne({ "name": "Gabriel", "age": 21 });
InsertMany()
O que é?
É um comando para a inserção de múltiplos valores dentro de uma Coleção, sendo que por padrão esses valores são inseridos de forma ordenada, porém podemos alterar esse comportamento.
Quando inseridos de forma ordenada, os Documentos podem sofrer uma "parada" na inserção caso ocorra algum erro, dessa forma apenas os Documentos antes do erro ter ocorrido serão inseridos. Porém caso optemos por inserir de forma não ordenada, todos os Documentos que não gerarem erro serão inseridos, por mais que outros gerem.
Sintaxe
Esse comando é extremamente similar ao insertOne
, com a única diferença que iremos passar nossos Documentos dentro de um Array.
use <nome do banco de dados>
db.<nome da coleção>.insertMany([{ }, { }]);
use my-database
db.user.insertMany([{ "name": "Gabriel", "age": 21 }, { "name": "Daniela", "age": 23 }]);
Find()
O que é?
É um comando para a pesquisa de Documentos, onde podemos aplicar filtros de busca, bem como definir o formato de retorno da busca.
Sintaxe
Assim como os comandos vistos anteriormente, esse também irá seguir uma sintaxe similar, utilizando o db
seguido da Coleção e indicando o comando find()
ao final, porém o comando em si pode receber até dois argumentos, sendo ambos em formato de JSON.
O primeiro argumento é um filtro de busca no qual pesquisamos os Documentos através de seus campos, para isso utilizamos um JSON, definindo a chave a ser usada no filtro e qual valor ela deverá ter.
O segundo argumento é uma "modelagem" do Documento encontrado, dessa forma podemos definir os campos que queremos que sejam retornados, ou ocultados, da busca realizada. Para definir que um campo deve ser retornado usamos seu nome seguido do número 1
e caso desejarmos ocultá-lo usamos o número 0
.
use <nome do banco de dados>
db.<nome da coleção>.find(); # retorna todos os Documentos
db.<nome da coleção>.find({ }); # define apenas o "filtro"
db.<nome da coleção>.find({ }, { }); # define o "filtro" e o formato do retorno
use my-database
db.my-database.find();
db.my-database.find({ });
db.my-database.find({ }, { });
Operadores de Comparação
O que são?
Como o nome diz, são operadores que realizam comparações entre os valores, normalmente utilizados para a criação de filtros.
Sintaxe
Os Operadores de Comparação do MongoDB nada mais são do que "chaves reservadas", logo tudo que precisamos fazer é passar a chave para a comparação desejada e o valor a ser comparado.
A lista de chaves de comparação do MongoDB é relativamente extensa, então ela não será abordada aqui, porém recomendo a consulta da documentação.
Por fim para aplicarmos os Operadores de Comparação, basta escolhermos uma ação a ser feita como, pesquisa find
por exemplo, e dentro do parâmetro de filtro utilizar os operadores.
use <nome do banco de dados>
db.<nome da coleção>.find({ });
use my-database
db.my-database.find({ age: { $gt: 18 } }); # busca todos os Documentos que tenha a idade maior que 18
Top comments (0)