O que é o MongoDB e comandos básicos
Published: 2020-12-19 23:20:16

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6pepxohq10lqhk709ec1.jpg)

MongoDB é um banco de dados open-source não relacional (NOSQL) orientado a documentos no formato JSON (ou seja, ele não possui como restrição a necessidade de ter tabelas e colunas criadas previamente, permitindo que um documento represente toda a informação necessária, com todos os dados que você quiser). No MongoDB, os documentos são agrupados em collections e um grupo delas forma um database. Agora, irei listar e comentar alguns dos comandos básicos utilizados no MongoDB:

db.createCollection("alunos") - criando uma tabela no MongoDB chamada de "alunos". É necessário primeiro criar a tabela e depois popular os dados

No MongoDB, a escrita é feita em linguagem Javascript, e os dados podem ser inseridos como Strings ou objetos. Por exemplo, vamos popular os dados de um aluno, passando as informações como objeto:

db.alunos.insert(
{
"nome" : "Felipe",
"data_nascimento" : new Date(1994, 02, 26)
})

Para inserirmos novos dados dentro de um campo também podemos passar um array, que pode conter objetos dentro dele.
db.alunos.find() - busca e retorna todos os dados contidos na tabela alunos. Quando um novo objeto é criado, ele recebe um id de maneira automática.

db.alunos.remove({"_id" : ObjetctId("56cb002b6d75cec12f"}) - comando para excluir um aluno que tenha esta id

__Buscas simples de dados__

db.alunos.find().pretty() - exibe os dados com uma formato mais bonito

db.alunos.find({ nome: "Felipe" }).pretty() - busca todos os dados que contenha os nomes "Felipe" (é o SELECT)

db.alunos.find({ nome: "Felipe", "habilidades.nome": "inglês }).pretty() - busca todos os dados que contenha os nomes "Felipe" e que tenham uma habilidade chamada "inglês"

db.alunos.find({
$or: [
{"curso.nome" : "Sistemas de informação"},
{"curso.nome" : "Engenharia Química"}
]
}).pretty() - busca os alunos que cursam "Sistemas de informação" OU "Engenharia Química"
db.alunos.find({
"curso.nome": {
$in : ["Sistemas de informação", "Engenharia Química"}
}
}) - busca os alunos que cursam "Sistemas de informação" OU "Engenharia Química", utilizando o operador IN

__Atualizando dados__

db.alunos.update(
{"curso.nome": "Sistemas de informação"},
{
$set : {
"curso.nome" : "Sistemas de Informação"
}
}
}) - substitui o aluno que tenha o curso como "Sistemas de informação" para "Sistemas de Informação" (é igual o método UPDATE do SQL). OBS: ele só substitui o PRIMEIRO REGISTRO ENCONTRADO (E NÃO TODOS)

db.alunos.update(
{"curso.nome" : "Sistemas de informação"},
{
$set : {
"curso.nome" : "Sistemas de Informação"
}
}, {
multi : true
}
}) - é o método UPDATE que alterar TODAS AS OCORRÊNCIAS 
ENCONTRADAS NO BANCO

db.alunos.update(
{"_id" : ObjetctId("56cb002b6d75cec12f")},
{
$push : { notas : 8.5 }
}) - adiciona um novo valor ao array de notas.

db.alunos.update(
{"_id" : ObjetctId("56cb002b6d75cec12f")},
{
$push : {
notas : { $each : [8.5, 3] }
}
}
) - o método each permite adicionarmos vários elementos de uma vez dentro de um array

__Ordenando e Buscando dados__

db.alunos.find({
notas : { $gt : 5 }
}) - buscando alunos que tenham nota maiores ou iguais a 5, gt é abreviação de greater than (maior que)

db.alunos.findOne({
notas : { $gt : 5 }
}) - buscando um aluno que tenham nota maior ou igual a 5 (retorna o primeiro que encontrar)

db.alunos.find().sort({"nome" : 1}) - ordena os alunos por nome em ordem crescente. Para fazer a ordem decrescente, é so trocar por -1

db.alunos.find().sort({"nome" : 1}).limit(3) - exibe apenas os três primeiros resultados da lista, por causa do método limit()