Eu queria começar a aprender sobre NoSQL especificamente sobre o MongoDB e nada melhor como fazer algo na pratica. Passei por alguns momentos de dificuldade especialmente no update, já que era a primeira vez.
Eu fiz ele todo orientado a objetos, primeiro comecei com a conexão com o banco de dados
[php]
class conexao{
function __construct(){
$nome_banco = ‘prioridades’;
$nome_collection = ‘tarefas’;
$this->conexao = new Mongo();
$this->db = $this->conexao->$nome_banco;
$this->collection = $this->db->$nome_collection;
header (‘Content-type: text/html; charset=utf-8′);
}
}
[/php]
Sem muitos problemas aqui, a unica coisa, foi o utf8, pois tive alguns problemas de codificação na hora de inserir os dados, se você rodar esse código, ele já vai criar o banco e a collection automaticamente caso ela não exista.
O metodo de mostrar um registro especifico tem um segredinho, que é a criação de um MongoID, sem ele não consegui encontrar o registro. O findOne, só retorna 1 documento.
[php]
function mostrar($_id){
$mongo_id = new MongoID($_id);
return $this->collection->findOne(array(‘_id’ => $mongo_id));
}
[/php]
O metodo que usei para listar é bem simples
[php]
function listar($filter){
return $this->collection->find($filter);
}
[/php]
A parte de inserir um documento no banco de dados, foi bem fácil também. Para inserir, você coloca em um array todas as informações, o campo e o valor dele.
[php]
function inserir(){
$this->query = array(
‘UsuarioID’ => $this->UsuarioID,
‘Usuario’ => $this->Usuario,
‘Tarefa’ => $this->Tarefa,
‘Tipo’ => $this->Tipo,//Obrigatório, idéia, outro
‘Prioridade’ => $this->Prioridade
);
$this->collection->insert($this->query);
}
[/php]
O método de exclusão também não tem segredos, é só criar o MongoID que esta tudo certo
[php]
function excluir(){
$this->mongo_id = new MongoID($this->_id);
$this->collection->remove(array(‘_id’ => $this->mongo_id));
}
[/php]
Agora vamos lá, a parte que eu tive mais dificuldade que foi o update. No update, é preciso usar o $set para alterar um campo especifico da collection, sem ele, ele vai alterar o documento todo, vai remover todo o resto e vai manter apenas o campo que você passar ali. Uma dificuldade que eu tive, foi que o $set só funciona com aspas simples, com aspas duplas ele definitivamente não funcionou.
[php]
function mudar_tarefa(){
$this->mongo_id = new MongoID($this->_id);
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$set’ => array(‘Tarefa’ => $this->Tarefa)), false);
}
function mudar_prioridade(){
$this->mongo_id = new MongoID($this->_id);
if($this->modo==’up’){
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$inc’ => array(‘Prioridade’ => 1)), false);
}elseif($this->modo==’down’){
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$inc’ => array(‘Prioridade’ => -1)), false);
}
}
[/php]
O $inc, serve para incrementar um valor em mais 1 ou menos 1, isso ai você pode especificar da maneira que você quiser. Lembrando que você tem que criar o MongoID para poder alterar o documento.
Essa ai é a classe que usei para fazer o sisteminha. As minhas dificuldades foram bobas, mas só vendo isso agora, pois não consegui encontrar em nenhum lugar sobre isso, principalmente sobre as aspas simples.
Ta aqui o download para quem quiser baixar.
http://www.megaupload.com/?d=5I0VX4I4