Archive for the ‘Tutorial’ Category
Assim como o MySql o MongoDB tem um shell para manipular dados diretamente na base, seguem os comandos (CRUD) básicos para inserir, buscar, atualizar e apagar documentos.
Para inicializar o shell:
/opt/mongo/bin/./mongo
Se tiver algum problema com este comando então faça isto:
cd /opt/mongo/bin/
./mongo
As linhas abaixo serão exibidas:
MongoDB shell version: 1.3.3-
url: test
connecting to: test
type "help" for help
>
Os comandos iniciais são:
show dbs | Mostra todas as bases de dados |
use dbname | Aponta a váriavel “db” para a base digite no lugar de dbname |
show collections | Exibi as coleções da base em uso. As collections “equivalem” as tables nos bancos relacionais. |
db.collection_name.insert(object) | Cria um documento |
db.collection_name.find() | Exibi os documentos da coleção |
db.collection_name.update(criteria_object_or_pair_key_value) | Atualiza um documento com o critério ou chave par/valor definido |
db.collection_name.remove(criteria_object_or_pair_key_value) | Remove um ou mais documentos com o critério ou chave par/valor definido |
Vamos à prática para exemplificar os comandos acima. Abaixo estamos verificando as bases existentes, definindo que usaremos a base “local”, confirmando que estamos na base correta e mostrando as coleções que neste caso ainda não existem.
> show dbs admin local >use local switched to db local > db local >show collections false
Agora vamos criar uma coleção de documentos chamada “minha_colecao” e inserir alguns dados.
>db.minha_colecao.insert({ nome: "Mauricio", fone: "12345678", idade: 10 })
ObjectId("4b808e9a6eff")
Quando exibimos as coleções novamente temos “minha_colecao” e “system.indexes” sendo a última criada automaticamente.
>show collections
minha_colecao
system.indexes
Podemos verificar nossos documentos criados e inserir outros.
>db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Mauricio", "fone" : "5678", "idade" : 10 } >db.minha_colecao.insert({ nome: "Monet", fone: "000", idade: 100 }) ObjectId("4b912e9a6ef4") >db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Mauricio", "fone" : "5678", "idade" : 10 } { "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 }
Para atualizar os documentos podemos após o hash passar o parâmetro “true” que força uma inserção caso o critério utilizado não seja encontrado.
>db.minha_colecao.update({nome: "Mauricio"}, {nome: "Amorim", fone: "000"}, true) >db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Amorim", "fone" : "000", "idade" : 10 } { "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 } >db.minha_colecao.update({nome:"Inexistente"},{nome:"Insere novo", fone:"2355"}, true) >db.minha_colecao.find() { "_id" : ObjectId("4b808e9a6eff"), "nome" : "Amorim", "fone" : "000", "idade" : 10 } { "_id" : ObjectId("4b912e9a6ef4"), "nome" : "Monet", "fone" : "000", "idade" : 100 } { "_id" : ObjectId("4b987e9a6e10"), "nome" : "Insere novo", "fone" : "2355"}
Por último vamos remover todos os documentos seguindo um determinado critério, neste caso o “fone” igual a “000″. Cuidado! Se o parâmetro com um critério não for informado todos os documentos da coleção serão removidos.
>db.minha_colecao.remove({fone: "000"}) >db.minha_colecao.find() { "_id" : ObjectId("4b987e9a6eff"), "nome" : "Insere um novo", "fone" : "2355"}
As funções utilizadas acima também podem receber um objeto como parâmetro e seu funcionamento será idêntico.
> xyz = { nome: "Monet", fone: "111", profissao: "artista" } >db.minha_colecao.insert(xyz) ObjectId("18b12e9a6ef4") >db.minha_colecao.find() {"_id": ObjectId("18b12e9a6ef4"), "nome":"Monet", "fone" : "111", "profissao" : "artista" }
Estes são comandos básicos de manipulação de dados, mais informações podem ser encontradas nas referências abaixo. Recomendo os screencasts do Joon You que são bem práticos.
Referências:
MongoDB DBA Operations
MongoDB Advanced Queries
Screencast – Introduction MongoDB with Joon You
The interactive shell by Kyle
Continuando a configuração de um ambiente para iniciar um projeto em Rails, vamos configurar o Ruby, o Ruby on Rails e algumas gems. Primeiramente por uma questão de compatibilidade vamos preparar a configurações para instalar o Ruby 1.8.6. Por padrão o Ubuntu 9.04 Jaunty Jackalope vem configurado para instalação da verão 1.8.7 do Ruby, para alterar precisamos alterar alguns arquivos. Verifique se já existe alguma versão instalada e remova.
ruby -v sudo apt-get remove ruby
Depois faça as seguintes alterações no arquivo sources.list
sudo gedit /etc/apt/sources.list
e cole o texto abaixo no final da página
Após crie o arquivo “preferences”
sudo gedit /etc/apt/preferences
e cole o texto abaixo
Agora as configurações estarão apontando para o repositório que carregará a versão 1.8.6 do Ruby, então podemos instalar os pacotes…
sudo apt-get update sudo aptitude install ruby rdoc irb ruby1.8-dev sudo aptitude install libyaml-ruby libzlib-ruby ri libopenssl-ruby
…e conferir a versão.
ubuntu@ubuntu:~$ ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
Instalando RubyGems
Execute os comandos abaixo no terminal para baixar o pacote, criar um alias para caminho e instalar a RubyGems.
cd ~ mkdir gems && cd gems wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz tar xf rubygems-1.3.2.tgz cd rubygems-1.3.2/ sudo ruby setup.rb sudo ln -s /usr/bin/gem1.8 /usr/bin/gem sudo gem update --system
Agora podemos instalar o Rails e o MySql
sudo gem install rails sudo gem install mongrel sudo apt-get install mysql-server libmysqlclient15-dev sudo gem install mysql
Para verificar o que foi instalado e as versões, podemos utilizar os comandos abaixo.
gem environment gem list
Referências:
- http://panthersoftware.com/articles/view/6/ruby-on-rails-development-on-ubuntu-9-04-jaunty-using-ruby-1-8-6
Para quem ainda está em dúvida se Ruby é legal ou porque ele é legal, e se é mais fácil desenvolver com Rails para Web ou não, aqui estão algumas dicas para fazer algumas “brincadeiras” nas horas de folga. Garanto que estas brincadeiras vão virar um vício em pouco tempo.
Ruby é uma linguagem apaixonante, mesmo para Read full story »