Você está na página 1de 23

Dr.

Luiz Fernando Sirotheau Serique Junior


1
O que é?
• Banco de dados orientado a documentos
• Lançado em 2009
• Código-fonte aberto com licença GNU AGPL
• Escrito inteiramente em C++
• Características de NoSQL
• Suportado por diversas linguagens: C, C#,
C++, Haskell, Java, JavaScript, Perl, PHP,
Python, Ruby e Scala
• Binários para plataformas: Windows, Mac OS
X, Linux e Solaris
Algumas empresas que usam..
Documentações
https://docs.mongodb.com/
https://docs.mongodb.com/tutorials/
https://university.mongodb.com/
Documentos JSON
Caracteríticas
• Usa o formato BSON (Binary JSON) que
suporta, por exemplo, tipos Date e Binary
Quando usar
• Big data
• Escrita intensa
• Busca simples (pesada em volume)
• Alta escala e disponibilidade (sharding,
replica setting)
• Schemas instáveis
Quando não usar
• Ambientes com restrição de espaço
• Necessidade de atender requisitos legais
• Necessidade de implementar requisitos de
ACID
• Sistemas com controle transacional
Equivalências
Database = Database
Table = Collection
Record = Document

Limite do documento BSON = 16 MB


Databases e Collections
Documents
Criando Documentos

db.inventory.insertMany([

{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },

{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },

{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }

])
Lendo Documentos

db.inventory.find( {} ) SELECT * FROM inventory


db.inventory.find( { status: "D" } ) SELECT * FROM inventory WHERE status = "D"

db.inventory.find( { status: { $in: [ "A", "D" ] } } ) SELECT * FROM inventory WHERE status in ("A", "D")

db.inventory.find( { status: "A", qty: { $lt: 30 } } )


SELECT * FROM inventory WHERE status = "A" AND qty < 30

db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )l. SELECT * FROM inventory WHERE status = "A" OR qty < 30

db.inventory.find( {

status: "A", SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item

$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ] LIKE "p%")

})

db.orders.find().sort( { "item.category": 1, "item.type": 1 } )


Atualizando Documentos

db.inventory.replaceOne(

{ item: "paper" },

{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, {

warehouse: "B", qty: 40 } ] }

)
Removendo Documentos

db.inventory.deleteOne( { status: "D" } )


Indices

db.collection.createIndex( { name: -1 } )
Text Search
db.stores.createIndex( { name: "text", description: "text" } )

db.stores.find( { $text: { $search: "java coffee shop" } } )

db.stores.find(

{ $text: { $search: "coffee shop

cake" } },

{ score: { $meta: "textScore" } }

).sort( { score: { $meta: "textScore" }

})
Agregação Simples
Agregação por Pipeline
Agregação por MapReduce
Replicação
Sharding
• Distribui o armazenamento e processamento
em várias máquinas (horizontal scaling).

Você também pode gostar