David Hows Peter Membrey Eelco Plugge Novatec
Original English language edition published by Apress, Copyright 2014 by Apress, Inc.. Portugueselanguage edition for Brazil copyright 2015 by Novatec Editora. All rights reserved. Edição original em Inglês publicada pela Apress, Copyright 2014 by Apress, Inc. Edição em Português para o Brasil copyright 2015 pela Novatec Editora. Todos os direitos reservados. Novatec Editora Ltda. [2015]. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Lúcia A. Kinoshita Revisão gramatical: Patrizia Zagni Editoração eletrônica: Carolina Kuwabata Assistente editorial: Priscila A. Yoshimatsu ISBN: 978-85-7522-422-9 OG20150305 Histórico de impressões: Março/2015 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário Sobre os autores...11 Sobre os revisores técnicos...12 Agradecimentos...14 Introdução...15 Capítulo 1 Introdução ao MongoDB...16 Examinando a filosofia do MongoDB... 17 Utilizando a ferramenta correta para o trabalho correto... 17 Ausência de suporte inato a transações...20 JSON e MongoDB... 21 Adotando uma abordagem não relacional...25 Escolhendo entre desempenho versus recursos...27 Executando o banco de dados em qualquer lugar...28 Encaixando todas as partes...29 Gerando ou criando uma chave...29 Usando chaves e valores... 31 Implementando coleções...32 Entendendo os bancos de dados...33 Examinando a lista de recursos...33 Usando armazenamento orientado a documentos (BSON)...33 Suportando queries dinâmicas...35 Indexando seus documentos...37 Tirando proveito dos índices geoespaciais...38 7
8 Introdução ao MongoDB Gerando perfis de queries...38 Atualizando informações in-place...39 Armazenando dados binários...40 Replicando dados... 41 Implementando o sharding...42 Usando as funções map e reduce...42 O framework de agregação do MongoDB...43 Obtendo ajuda... 44 Acessando o site... 44 Batendo um papo com os desenvolvedores do MongoDB... 44 Copiando e colando códigos do MongoDB...45 Encontrando soluções em grupos do Google...45 Tirando proveito do sistema de monitoração JIRA...45 Resumo... 46 Capítulo 2 Instalando o MongoDB...47 Selecionando a sua versão...47 Entendendo os números de versão...48 Instalando o MongoDB em seu sistema...49 Instalando o MongoDB no Linux...49 Instalando o MongoDB no Windows...52 Executando o MongoDB...53 Pré-requisitos...53 Analisando o layout da instalação...54 Usando o shell do MongoDB...55 Instalando drivers adicionais...56 Instalando o driver para PHP...57 Verificando se sua instalação PHP funciona...62 Instalando o driver para Python...65 Verificando se sua instalação do PyMongo funciona... 68 Resumo...69
Sumário 9 Capítulo 3 O modelo de dados...70 Fazendo o design do banco de dados...70 Explorando as coleções...72 Usando documentos...74 Criando o campo _id...79 Criando índices...80 Causando impacto no desempenho com os índices...80 Implementando a indexação geoespacial... 81 Efetuando queries com informações geoespaciais...83 Usando o MongoDB no mundo real... 90 Resumo... 90 Capítulo 4 Trabalhando com dados...92 Navegando pelos seus bancos de dados...92 Visualizando os bancos de dados e as coleções disponíveis...93 Inserindo dados em coleções...94 Queries de dados... 96 Utilizando a notação com ponto...99 Usando as funções sort, limit e skip...100 Trabalhando com capped collections, ordem natural e $natural... 102 Obtendo um único documento...104 Usando comandos de agregação... 105 Trabalhando com operadores condicionais...109 Tirando proveito das expressões regulares... 120 Atualizando dados... 120 Atualizando dados com update()...121 Implementando um upsert por meio do comando save( )... 122 Atualizando informações automaticamente... 122 Especificando a posição em um array correspondente... 128 Operações atômicas... 130 Modificando e retornando um documento atomicamente... 132 Renomeando uma coleção... 133
10 Introdução ao MongoDB Removendo dados... 134 Referenciando um banco de dados... 136 Fazendo referência aos dados manualmente... 136 Fazendo referência aos dados com DBRef... 138 Implementando funções relacionadas a índices... 140 Analisando comandos relacionados a índices... 143 Forçando um índice especificado em queries de dados... 143 Restringindo as correspondências feitas pelas queries... 145 Resumo... 146 Capítulo 5 GridFS...147 Esclarecendo alguns dados históricos... 148 Trabalhando com o GridFS... 150 Conhecendo as ferramentas de linha de comando... 150 Usando a chave _id... 152 Trabalhando com nomes de arquivo... 152 Determinando o tamanho de um arquivo... 153 Trabalhando com tamanhos de porções... 154 Monitorando a data de carga... 155 Gerando hashes de seus arquivos... 155 Dando uma espiada no MongoDB internamente... 156 Utilizando o comando search... 159 Apagando arquivos...160 Obtendo arquivos do MongoDB...161 Conclusão sobre o mongofiles...161 Explorando a eficácia do Python... 162 Conectando-se ao banco de dados... 163 Acessando as palavras...164 Inserindo arquivos no MongoDB... 165 Obtendo arquivos do GridFS...166 Apagando arquivos...166 Resumo... 167