Getting Started com MongoDB
Importação, exportação, insercão, operadores aritméticos, buscas básicas, operador de existência, agora vai, é hoje que você aprende
Se ainda não sabe o que é MEAN, dê uma lida:
Full-Stack JavaScript ?
Instalação
Introdução ao MongoDB
O MongoDB é um banco NoSQL orientado a documentos, open source, usa javascript, e extremamente rápido, mas isso não é tudo, aliás não ache que ele é um banco que deva substituir todos seus bancos relacionais. Existe casos que o relacional seja a melhor opção ou até outro banco NoSQL. BLAH!
Então quando você usaria victor ? O__0
- Um sistema onde eu teria uma massa imensa de dados(Gigantesca).
- Onde os dados crescerá muito e precisaria dividi-los.
- Caso eu queira que os dados sejam baseados por localização.
- Não queira um DBA para meu projeto.
- Qualquer aplicação real time como chats e rede sociais.
Usuaria o noSQL em qualquer caso em que o relacional não daria conta, ou que ficasse com gambiarras. O MongoDB dependendo do que eu queira seria minha opção, ou senão outro banco noSQL.
Pra ficar melhor seu entendimento, leia: Devo usar NoSQL e MongoDB?
Get’s get started
Vamos começar a brincadeira inicializando o mongoDB no seu terminal (levantando)
Depois de inicializar, para que você abra o client de desenvolvimento do mongoDB use apenas o comando:
Comandos básicos
Os exemplos foram feitos de acordo com o meu database, caso a sua esteja vazia, você pode baixar esse arquivo JSON.
Importar os dados de um JSON:
Caso não exista o banco ou a collection, ele irá criar um novo, como por exemplo:
Exportar arquivos de uma coleção para um arquivo JSON:
Selecionando o banco para usá-lo
Caso ele não exista, o mongo vai criar a database. Se quiser levantar o client em uma database já selecionada para usar:
Agora se eu usar o comando:
Ele me retornará o nome do banco que está em uso. Mas e se eu quiser listar todos os bancos que eu tenho ?
Fácil não é ?
No mongoDB não temos tabelas, no noSQL, elas tem o nome de collections, e para listar as collections que tenho no banco é:
Inserção
Para fazer uma inserção vamos usar um exemplo de um banco já criado, e lembre-se, use o comando para usá-lo e em seguida uma inserção para ele alocar um espaço do banco.
Inserindo na collection teste, como vai ser a primeira vez, ele irá criar.
Agora sim ele alocou no hd, pois teve uma inserção de dados e quando usarmos o comando para listar os bancos ele irá aparecer.
Ora, podemos melhorar essa inserção, já que estamos no client, podemos usar variáveis e deixar essa inserção mais organizada não é ? Muitas vezes inserimos muitos dados e acaba ficando difícil.
Agora queremos listar todos os conteúdos da collection, para saber se realmente inseriu todos os dados.
OPA! Escrevi errado, e agora ? Posso modificar ? =(
Claro!
Ele irá mostrar o resto das informações, porém ele vem como cursor, nao tem como modificar usando “p.name = ‘RatoCabeludo’ “
Pra resolver, usaremos o findOne.
Ele mudará(Caso o campo name não exista, ele criará um novo com o valor setado) CUIDADO! VAI ESTAR SALVO LOCALMENTE! Precisamos salvar, e para isso usaremos o save.
Repare que aparece esse resultado:
Então se fizer um
ele estará lá, porém esse caminho foi muito longo não acha ? =( Tivemos que encontrar o objeto depois modificar e usar o save. Porém lá pra frente veremos o comando update que faz isso de uma vez. =)
Buscas básicas
Onde clasuras seria nosso where no banco relacional e o campos seria o nosso select.
No objeto de campos apenas precisamos dizer quais campos podem ser retornados 1 - diz qual o campo quer retornar(true) 0 - nega o campo nessa busca(false)
exemplo:
Resultado:
Veja que ele também retorna o _id, para tira-lo é só usar o 0 para negar.
Resultado:
Operadores Aritméticos
É bastante fácil. (⌒‿⌒)
Exemplo:
Resultado:
Operadores lógicos
OU é $or
Exemplo:
Resultado:
$nor (not or) - Todos os outros registros que não vieram na busca do nosso $or
$and
Resultado:
Operadores existenciais
$exist
Para quê ?
Se vc ja fez blog, já deve ter visto em tags clounds, aquelas tag mais usadas. Imagina vc querer montar essa possibilidade, vc tem que pesquisar todos os posts que possuem tags, então ae criar todo o mecanismo, não adianta vc querer dar um select em tudo e depois filtrar, pq não filtrar direto ?
Concluindo
Com esses poucos comandos já dá pra brincar um pouco =) lindo ele não é !?