Comandos Essenciais de MongoDB: Atualização e Consultas Avançadas
Classificado em Ciências Sociais
Escrito em em
português com um tamanho de 5,81 KB
Atualização de Documentos (Update)
9. Atualizar Omelete: Adicionar Opcionais
Encontre o documento com a receita da omelete e, usando o _id deste documento, altere-o acrescentando os opcionais salsinha e cenoura ralada.
db.receitas.find({"Título": "Omelete"})
db.receitas.update({_id: XXXXX}, {$set: {"opcionais": ['orégano', 'queijo ralado', 'páprica', 'tomates picados', 'Salsinha', 'Cenoura Ralada']}})
10. Adicionar Assinatura do Chef a Todas as Receitas
Acrescente em todas as receitas o campo Assinatura seguido do nome do chef (seu nome).
db.receitas.update({}, {$set: {"Assinatura": "XXX"}}, {multi: 1})
11. Upsert: Ovos Beneditinos
Tente alterar a receita Ovos Beneditinos, acrescentando 3 ovos, 4 tiras de bacon frito e vinagre a gosto. Caso a receita não exista, deve ser acrescentada à coleção (use o campo Itens ao registrar os ovos, em vez de Item).
db.receitas.update({"Título": "Ovos Beneditinos"}, {$set: {"Itens": "Ovo", "Quantidade": 3, "Bacon frito": "4 tiras", "Vinagre": "a gosto"}}, {upsert: 1})
12. Modificar Ovos Beneditinos (Adicionar, Renomear e Remover Campos)
Inclua na receita Ovos Beneditinos 1 pão bola, remova o campo que indica vinagre a gosto e mude o nome do campo Itens para Item.
- Adicionar 'Pão bola':
db.receitas.update({"Título": "Ovos Beneditinos"}, {$set: {"Pão bola": 1}}) - Renomear 'Itens' para 'Item':
db.receitas.update({"Título": "Ovos Beneditinos"}, {$rename: {"Itens": "Item"}}) - Remover 'Vinagre':
db.receitas.update({"Título": "Ovos Beneditinos"}, {$unset: {"Vinagre": 1}})
Validação de Esquema (Schema Validation)
16. Validar e Modificar Regras na Coleção 'receitas'
Ainda usando a coleção de receitas, valide a existência dos campos Título e Item. Depois, modifique a validação do campo Item.
A. Validar Título e Item:
db.runCommand({collMod: "receitas", validator: {"Título": {$exists: true}, "Item": {$exists: true}}})
B. Modificar Validação do Item:
db.runCommand({collMod: "receitas", validator: {"Item": {$exists: false}}})
Importação e Consultas Específicas (Mega Sena)
17. Importar Dados CSV para a Coleção 'resultados'
Importe o arquivo megasena.csv para a base de dados megasena, na coleção resultados.
mongoimport -v --host localhost:27017 -d megasena -c resultados --file C:\...\MegasenaOkVirg.csv --type csv --headerline
18. Consultar Concursos com Múltiplos Ganhadores
Retorne os concursos que tiveram mais de um ganhador.
19. Consultar Dezenas por Intervalo
Retorne os concursos em que a primeira dezena foi maior do que 20 e a quarta dezena foi menor do que 30.
db.resultados.find({"1a Dezena": {$gt: 20}, "4a Dezena": {$lt: 30}})
20. Consultar Dezenas Usando $or
Mostre os concursos em que a terceira dezena teve valor 34 ou 18, e a quinta dezena era maior do que 20.
db.resultados.find({"5a Dezena": {$gt: 20}, $or: [{"4a Dezena": 34}, {"4a Dezena": 18}]})
Consultas Avançadas e Expressões Regulares (Receitas)
21. Busca por Regex e Ordenação Múltipla
Mostre todas as receitas com títulos que contenham a letra 'o', ordenando pelo Título em ordem crescente e pelo Item em ordem decrescente.
db.receitas.find({"Título": /o/}).sort({Título: 1, Item: -1})
22. Busca por Regex de Final de String ($)
Retorne as receitas que contenham Açúcar, cuja medida acabe com a palavra 'sopa' (ex: 5 colheres de sopa), e que tenham sal com medida terminada em 'pitada' (ex: 1 pitada).
db.receitas.find({"Item": "Açúcar", "Medida": /sopa$/, "sal": /pitada$/})
23. Busca por Regex de Início de String (^) e Ordenação
Liste as receitas cujo modo de preparar comece com 'misture', ordenando pelo Título da receita em ordem decrescente.
db.receitas.find({"Modo de preparar": /^misture/i}).sort({Título: -1})
24. Busca Combinada ($or) e Regex
Faça a consulta que mostra as receitas com Título que contenha a letra 'i', ou que tenham Item começado com 'O', em ordem crescente de título.
db.receitas.find({$or: [{"Título": /i/i}, {"Item": /^O/}]}).sort({Título: 1})
25. Listar Títulos Distintos (Distinct)
Mostre apenas os diferentes títulos de receitas cadastradas no cardápio, sem repetições.
db.receitas.distinct("Título")
26. Busca por Múltiplos Valores ($in)
Retorne as receitas de Crepeoca, Miojo e Omelete.
db.receitas.find({"Título": {$in: ['Crepeoca', 'Miojo', 'Omelete']}})
27. Excluir Itens ($nin)
Liste todas as receitas que não levam os itens Miojo ou sal.
db.receitas.find({"Item": {$nin: ["Miojo", "sal"]}})
28. Paginação: Pular Resultados (Skip)
Salte as 3 primeiras receitas e mostre todas as outras disponíveis no cardápio.
db.receitas.find().skip(3)