Mongo DB: Introdução
Introdução
Mongo é orientado à documentos (JSON), ou seja, ele é um banco não relacional document-based.
Mongo é orientado à documentos (JSON), ou seja, ele é um banco não relacional document-based.
Basicamente neste tipo de banco (document-based ou document-oriented) temos coleções de documentos, nas quais cada documento é autossuficiente, contém todos os dados que possa precisar, ao invés do conceito de não repetição + chaves estrangeiras do modelo relacional.
A ideia é que você não tenha de fazer JOINs pois eles prejudicam muito a performance em suas queries (são um mal necessário no modelo relacional, infelizmente). Você modela a sua base de forma que a cada query você vai uma vez no banco e com apenas uma chave primária pega tudo que precisa.
Obviamente isto tem um custo: armazenamento em disco. Não é raro bancos MongoDB consumirem muitas vezes mais disco do que suas contrapartes relacionais.
MongoDB é case-sensitive ao contrário dos bancos relacionais.
Aplicativos mongo instalados:
- mongod: inicializa o servidor de banco de dados;
- mongo: inicializa o cliente de banco de dados;
- mongodump: realiza dump do banco (backup binário);
- mongorestore: restaura dumps do banco (restore binário);
- mongoimport: importa documentos JSON ou CSV pro seu banco;
- mongoexport: exporta documentos JSON ou CSV do seu banco;
- entre outros.
Comandos básicos
Para subir um servidor mongo
C:\mongo\bin> mongod --dbpath C:\mongo\data
|
Agora abra outro prompt de comando (o outro ficará executando o servidor) e novamente dentro da pasta bin do Mongo, digite:
c:\mongo\bin> mongo
|
O comando abaixo no terminal cliente mostra os bancos existentes nesse servidor:
> show databases
|
Agora digite o seguinte comando para “usar” o banco de dados “workshop” (um banco que você sabe que não existe ainda):
> use workshop
|
O terminal vai lhe avisar que o contexto da variável “db” mudou para o banco workshop, que nem mesmo existe ainda (mas não se preocupe com isso!). Essa variável “db” representa agora o banco workshop e podemos verificar quais coleções existem atualmente neste banco usando o comando abaixo:
> show collections
|
Além de campos com valores específicos, esse parâmetro do find permite usar uma infinidade de operadores como por exemplo, trazer todos documentos que possuam a letra ‘a’ no nome com regex:
> db.customers.find({nome: { $regex: /a/ }})
|
Mas e se eu quiser trazer todos os customers maiores de idade?
> db.customers.find({idade: {$gte: 18}})
|
O operador $gte (Greater Than or Equal) retorna todos os documentos que possuam o campo idade e que o valor do mesmo seja igual ou superior à 18. E podemos facilmente combinar filtros usando vírgulas dentro do documento passado por parâmetro, assim como fazemos quando queremos inserir campos em um documento:
> db.customers.find({nome: "Luiz", idade: {$gte: 18}})
|
Alguns outros operadores que você pode usar junto ao filtro do find são:
- $eq: exatamente igual (=)
- $ne: diferente (<> ou !=)
- $gt: maior do que (>)
- $lt: menor do que (<)
- $lte: menor ou igual a (<=)
- $in: o valor está contido em um array de possibilidades, como em um OU. Ex: {idade: {$in: [10,12] }}
- $all: MongoDB permite campos com arrays. Ex: { tags: [“NodeJS”, “MongoDB”] }. Com esse operador, você compara se seu campo multivalorado possui todos os valores de um array específico. Ex: {tags: {$all: [“NodeJS”, “Android”]}}
Você também pode usar findOne ao invés de find para retornar apenas o primeiro documento, ou ainda as funções limit e skip para limitar o número de documentos retornados e para ignorar alguns documentos, especificamente, da seguinte maneira:
> db.customers.find().skip(1).limit(10)
|
No exemplo acima retornaremos 10 customers ignorando o primeiro existente na coleção.
E para ordenar? Usamos a função sort no final de todas as outras, com um documento indicando quais campos e se a ordenação por aquele campo é crescente (1) ou descrescente (-1), como abaixo em que retorno todos os customers ordenados pela idade:
> db.customers.find().sort({idade: 1})
|
Nota: assim como nos bancos relacionais, os métodos de consulta retornam em ordem de chave primária por padrão, o que neste caso é o _id.
0 comentários:
Postar um comentário