Tutorial Perl MongoDB scripting
Como prometí en un comentario,aquí un tutorial de como usar MongoDB desde un script en Perl,el cual luego podemos usar en GUI,Diseño Web,etc en otra ocasión lo haré en python pero de momento en Perl.
Primero que nada se supone que ya debemos tener instalado MongoDB,si no es así consulta lo documentación o busca si ya esta en tu distribución de Linux(Si usas Linux):
Por ejemplo en Ubuntu/Debian:
aptitude search mongo
Gentoo:
emerge –search mongoY luego lo instalamos :
sudo apt-get install mongodb
etc
Bueno,también necesitamos el modulo MongoDB de Perl,así que lo instalamos desde CPAN:
En terminal:
sudo cpan install MongoDB
SI usan Windows,pueden instalar desde la GUI que traen las versiones de Perl,dependiendo cual usen,con el nombre MongoDB.
Ahora vamos a crear el script para Shell:
Con su editor favorito:
vim mongo.pl
Y metemos:
#!/usr/bin/env perl # <-Hashbang
use MongoDB; # <- Modulo
use MongoDB::Database; <- Submodulo
use strict;
use warnings; # <- Para desarrollo
# Definimos algunas variable para conectarnos a la Base de Datos
# Como el nombre de la base de datos
# El puerto,etc
my $database = "test";
my $puerto = 27017;
my $host = "localhost";
# Iniciamos la conexion
$host = sprintf("%s:%s",$host,$puerto);
my $cliente = MongoDB::MongoClient->new("host" => $host );
# Nos conectamos a la base de datos
my $base_datos = $cliente->get_database( $database );
Esa es la plantilla basica de conexion,ahora vamos a ver algunas cosas que se pueden hacer:
Listar las collections:
Para ello usamos un array
my @collections = $base_datos->collection_names;
for (my $i = 0; $i < scalar(@collections); $i++)
{
print $collections[$i],"\n";
}
Definir una collection:
my $collections = {};
my @collections = $base_datos->collection_names;
for (my $i = 0; $i < scalar(@collections); $i++)
{
print $i,":",$collections[$i],"\n";
}
my $coll = {};
print "Elige una base de datos : ";
my $R_c = <STDIN>;
chop($R_c);
$coll->{$collections[$R_c]} = $base_datos->get_collection($collections[$R_c]);
Eso se hace mas simple pero yo use una referencia para acceder a barias collections,ahora ya estamos en una collection adentro de la referencia:
$coll;
También podemos hacer algo mas simple manualmente como;
my $coll = $base_datos->get_collection('collection');
Buscar un objeto:
Para buscar un objeto solo basta con asignar una variable al objeto,ya que solo es uno:
Pero aunque nos devuelva un solo valor covertira la variable a un hashref,ya que al usar formato estilo JSON debemos iterar sobre un valor de tipo diccionario,si usan,usaban MySQL no hay problema se hace lo mismo para recorrer los valores:
my $object = $coll->{$collections[$R_c]}->find_one();
foreach my $keys(keys $object)
# Con un foreach basta
{
print $object->{$keys},"\n";
}
Buscar todos los datos de una collection:
Si no queremos buscar uno y queremos ver todos los datos podemos usar un bucle foreach anidado en un while desde la funcion find del modulo MongoDB:
my $all = $coll->{$collections[$R_c]}->find;
while (my $doc = $all->next) {
foreach my $keys (keys $doc)
{
print $doc->{$keys}," ";
}
print "\n";
}
Insertar datos:
Para insertar datos debemos estar en la collection,así que el código iría debajo del anterior o en vez:
$coll->{$collections[$R_c]}->insert({
"_id" => 2,
"value" => "Hola Mundo desde Perl y MongoDB"
});
Les dejo un script con todo lo que hicimos:
Enlace
Bueno y eso es lo básico,conexión,consulta y insertar,para mas información visiten el tutorial de CPAN:
http://search.cpan.org/~friedo/MongoDB-0.701.4/lib/MongoDB/Tutorial.pod
Gracias, un buen y útil resumen para los que estamos empezando con MongoDB vía Perl, facilita mucho el trabajo y acorta tiempos de aprendizaje. Saludos.
ResponderBorrarQue bueno que te haya sido útil :D,ya casi termino el de python por si también te interesa.
ResponderBorrarSaludos :D.