Atividades banco mongoDB
db.<nome-da-collection>.<operacao-desejada>
db.colecao1.count();
db.megasena.count();
db.<colecionation>.find();
db.megasena.find();
db.megasena.findOne();
db.<collection>.find(<campo1>)
db.megasena.find({"Concurso":73});
db.megasena.find({"Concurso":73}).pretty();
db.megasena.find({"Ganhadores_Sena":5});
Por padrão exibe todas as colunas. Para restringir alguns campos:
db.<collection>.find({<campo1>:<valor>},{<campoParaExibir>:<exibeOuNaoExibe>});
db.megasena.find({"Ganhadores_Sena":5},{"Concurso":1});
db.megasena.find({"Ganhadores_Sena":5},{"Concurso":true,
"_id":false});
db.megasena.find({"Ganhadores_Sena":5}, {"Concurso":1, "_id":0});
db.<collection>.insert({<campo>:<valor>});
db.megasena.insert(
{
"Concurso" : 99999,
"Data Sorteio" : "19/06/2014",
"1 Dezena" : 1,
"2 Dezena" : 2,
"3 Dezena" : 3,
"4 Dezena" : 4,
"5 Dezena" : 5,
"6 Dezena" : 6,
"Arrecadacao_Total" : 0,
"Ganhadores_Sena" : 0,
"Rateio_Sena" : 0,
"Ganhadores_Quina" : 1,
"Rateio_Quina" : 88000,
"Ganhadores_Quadra" : 55,
"Rateio_Quadra" : 76200,
"Acumulado" : "NAO",
"Valor_Acumulado" : 0,
"Estimativa_Prêmio" : 0,
"Acumulado_Mega_da_Virada" : 0
});
Ex: ganhador
db.ganhadores.count();
db.ganhadores.insert({"Concurso":99999,
"CPF":12345678909});
db.ganhadores.insert({"Concurso":99999,
"CPF":12345678909,
"Nome":"Coffin Joe"});
db.ganhadores.find().pretty();
db.<collection>.update(
{<criterioBusca>:<valor>},
{<campoAtualizar>:<novoValor>}
);
db.ganhadores.update(
{"_id":ObjectId("5846edb36cad189cb335c440")},
{"Nome": "Novo nome"});
db.<collection>.update(
{<criterioBusca>:<valor>},
{$set: {<campoAtualizar>:<novoValor>}});
db.ganhadores.update(
{"_id":ObjectId("5846edb36cad189cb335c440")},
{$set:{"NOme":"Nome alterado"}});
Por padrão altera apenas o primeiro registro encontrado. Para alterar todos os registros usa o multi.
db.ganhadores.update({}, {$set:{"CPF":55555555555}});
Alterando multi para true, todas as linhas são alteradas.
db.ganhadores.update({},
{$set:{"CPF":55555555555}},{multi:true});
Busca registro, se existir atualizar, senão cadastra.
db.ganhadores.update({"Nome":"Mula sem cabeça"},
{$set:{"CPF":33333333333}},
{multi:0,upsert:0});
db.ganhadores.update({"Nome":"Mula sem cabeça"},
{$set:{"CPF":33333333333}},
{multi:0,upsert:1});
db.<collection>.remove({<criterioBusca>:<valor>});
Removendo todos os registros com CPF 33333333333:
db.ganhadores.count();
db.ganhadores.find({"CPF":33333333333}).count();
db.ganhadores.remove({"CPF":33333333333});
db.ganhadores.count();
Para remover todos os registros de uma collection, é só passar uma condição vazia.
db.ganhadores.count();
db.ganhadores.remove({});
db.ganhadores.count();
db.<collection>.drop();
db.collectionNova.insert({"coluna":"so"});
db.collectionNova.count();
db.collectionNova.drop();
db.<collection>.update({},
{$unset:{<campo>: 1}},
false,true);
O parâmetro false avisa que não é um upsert e o parâmetro true é a confirmação para remover todos os documentos.
db.messages.update({},
{$unset:{titulo:1}},
false,true);
Alterando apenas o nome da coluna
db.<collection>.update({},
{$rename: {"<nomeColunaAtual>" : "<nomeColunaNova>"}},
false,true);
db.messages.update({},
{$rename: {"mailboxx": "mailbox"}},
falsae,true);
Para filtrar "Data de sorteio" apena de 2009, utiliza-se expressões regulares.
db.<collection>.find({<campo>:/<textoBuscar>});
db.<collection>.find({<campo>:{$regex:<textoBuscar>}});
db.megasena.find({"Data Sorteio":/2009/}).count();
db.megasena.find({"Data Sorteio":{$regex:'2009'}}).count();
Contar os ganhadores que tem joe em seu nome.
db.ganhadores.find({"Nome":/joe/}).count();
0
db.ganhadores.find({"Nome":/Joe/}).count();
1
Ignorando letras maiúsculas e minúsculas:
Sintaxe
db.<collection>.find({<campo>:/<texto>/i});
db.<collection>.find({<campo>:{$regex:<texto>,$options:'i'}});
Exemplo:
db.ganhadores.find({"Nome":/joe/i}).count();
db.ganhadores.find({"Nome":{$regex:'joe', $options:'i'}}).count();
Operadores de busca
$gt maior que (greater-than)
$gte igual ou maior que (greater-than or equal to)
$lt menor que (less-than)
$lte igual ou menor que (less-than or equal to)
$ne não igual (not equal)
$in existe em uma lista
$nin não existe em uma lista
$all existe em todos elementos
$not traz o oposto da condição
$mod calcula o módulo
$exists verifica se o campo existe
$elemMatch compara elementos de array
$size compara tamanho de array
```
### Capped Collection
As coleções tampadas são collections com tamanhos predefinidos e com seu conteúdo rotativo.
```js
db.createCollection("<collection>", {capped: true, size: <tamanho em bytes>, max: <numero-documentos>});
```
O tamanho mínimo deve ser 4096 e optar por limitar o número de documentos com max.
Exemplo:
```js
db.createCollection("cacheDeDoisDocumentos", {capped:true, size:4096, max:2});
db.cacheDeDoisDocumentos.insert({"nome":"teste 1"});
db.cacheDeDoisDocumentos.insert({"nome":"teste 2"});
db.cacheDeDoisDocumentos.insert({"nome":"teste 3"});
db.cacheDeDoisDocumentos.insert({"nome":"teste 4"});
```
Se consultar, percebemos que apenas os dois últimos estão armazenados.
```js
db.cacheDeDoisDocumentos.count();
```
### Schema design
´´´js
db.seriados.insert({
"_id":4,
"nome": "Chaves",
"personagens":[
"Seu Barriga",
"Quico",
"Chaves",
"Chiquinha",
"Nhonho",
"Dona Florinda"]});
```
Cadastrando livro
```js
db.livros.insert({
_id:"A menina do Vale",
autor:"Bel Pesce",
tags: ["empreendedorismo", "inspiração","virar a mesa"]});
```
Cadastrando comentário
```js
db.comentarios.insert({
livro_id: "A menina do Vale",
autor: "Amit Garg",
texto: "A Menina do Vale tem o poder de energizar qualquer pessoa. É um livro sobre ação e mostra que qualquer pessoa nesse mundo pode realizar os seus sonhos."
});
db.comentarios.insert({
livro_id: "A menina do Vale",
autor:"Eduardo Lyra",
texto:"Pare tudo e leia A Menina do Vale agora mesmo. Te garanto que você vai aprender demais com essa leitura e vai se surpreender com o quanto é capaz de fazer."});
```
Essa abordagem para o Mongo não tem vantagem, pois separa as informações em locais distintos. Neste caso o ideal é embutir as informações de comentários dentro de cada livro.
```js
db.livros.insert({
_id:"A menina do Vale",
autor:"Bel Pesce",
tags: ["empreendedorismo", "inspiração","virar a mesa"],
comentarios:[
autor: "Amit Garg",
texto: "A Menina do Vale tem o poder de energizar qualquer pessoa. É um livro sobre ação e mostra que qualquer pessoa nesse mundo pode realizar os seus sonhos.",
autor:"Eduardo Lyra",
texto:"Pare tudo e leia A Menina do Vale agora mesmo. Te garanto que você vai aprender demais com essa leitura e vai se surpreender com o quanto é capaz de fazer."
]
});
### Relacionando muitas collection para muitas