Este documento fornece uma introdução ao MongoDB, explicando seus principais conceitos como coleções, documentos e campos. Também mostra como instalar e usar o MongoDB Shell para manipular bancos de dados, coleções, documentos e realizar consultas, ordenações, atualizações e remoções.
1. Introdução ao MongoDB
Christiano Anderson
http://christiano.me
Twitter: @dump
E-mail: chris@christiano.me
2. Conceitos básicos
● Uma base de dados é composta de várias
“coleções”;
● Uma coleção é composta de vários
“documentos”
● Um documento é composto de vários
“campos”
3. Definições
Banco Relacional MongoDB
Base de dados --> Base de Dados
Tabela --> Coleção
Registro --> Documento
Índice --> Índice
Join --> Documento embarcado
Foreign key --> Referência
4. Instalação
● A forma mais fácil é usar o gerenciador de
pacotes da sua própria distribuição.
http://bit.ly/mongo_no_debian
6. MongoDB Shell
● Roda engine JavaScript;
● Permite manipular todo o banco de dados;
● Permite criar funções;
● Ler arquivos externos;
● Realizar comandos administrativos;
7. Mongo Shell
anderson@endor:~$ mongo
MongoDB shell version: 2.4.6
connecting to: test
> a = 10
10
> b = 30
30
> a < b
true
> b < a
false
8. Consultando bases disponíveis
anderson@endor:~$ mongo
MongoDB shell version: 2.4.6
connecting to: test
> show dbs
busca 0.203125GB
dieese 5.951171875GB
easytaxi 0.453125GB
local 0.078125GB
mobile 0.203125GB
>
9. Tudo é dinâmico
● Diferente de bancos relacionais, não há
necessidade de criar modelagem antes;
● Ao definir algum valor, os dados são
automaticamente criados;
● Tipagem forte;
10. Criando uma base de dados
anderson@endor:~$ mongo
MongoDB shell version: 2.4.6
connecting to: test
> use uenf
switched to db uenf
>
A base já foi criada
11. Inserindo registros
A coleção “alunos” foi automaticamente criada
> db.alunos.insert({
... nome: 'Christiano',
String entre aspas
... sobrenome: 'Anderson',
... sexo: 'masculino',
... idade: 33,
Inteiro ou float sem aspas
... materias: ['MongoDB','Python','Lógica de Programação']
... })
>
Lista de valores
15. Inserindo mais um documento
> db.alunos.insert({
... nome: 'Carolina',
... sobrenome: 'Ferreira',
... sexo: 'feminino',
... idade: 29,
... email: 'carol@yahoo.com',
... materias: ['MongoDB','Riak','Java'],
... notas: {'MongoDB': 10, 'Riak': 8, 'Java': 9}
... })
>
Esse campo não tinha no
Registro anterior
Documento dentro de
documento
30. Listando apenas o primeiro nome
de todo mundo na coleção
> db.alunos.find( {}, {'nome':true} )
{ "_id" : ObjectId("522f22b08434c181910716eb"), "nome" :
"Christiano" }
{ "_id" : ObjectId("522f264c8434c181910716ed"), "nome" :
"Juliana" }
{ "_id" : ObjectId("522f2b998434c181910716ee"), "nome" :
"Carolina" }
>
O MongoDB sempre vai mostrar o ObjectID, mas tem como tira-lo do resultado, veja...
35. Como descobrir quem não tem o
campo email no documento?
> db.alunos.find({'email': {$exists: false} })
36. Adicionando um campo em todos os
documentos
Como adicionar um campo tipo bool (True,
False) em todos os registros?
37. Veja bem....
Query
> db.alunos.update({ },
{ $set: { 'aprovado': true } },
{ multi: true })
O que adicionar
Grava a alteração em todos
Os registros que atendem
Ao critério
47. Testando a conexão
(pymongo)anderson@endor:~$ python
Python 2.7.3 (default, Jan 2 2013, 13:56:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>>
48. Listando os nomes dos alunos
(pymongo)anderson@endor:~$ python
Python 2.7.3 (default, Jan 2 2013, 13:56:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.fef
>>> col_alunos = db.alunos
>>> todos_alunos = col_alunos.find({})
>>> for aluno in todos_alunos:
... print aluno['nome']
...
Christiano
Carolina
Carlos
>>>