#!/usr/bin/perl use feature qw{ say state } ; use strict ; use warnings ; use Data::Dumper ; use MongoDBx::Class ; use MongoDB ; my @movies ; push @movies, { title => 'Blade Runner', rating => 'R', releaseYear => '1982', hasCreditCookie => 1 } ; push @movies, { title => 'Thor', rating => 'PG-13', releaseYear => '2011', hasCreditCookie => 1 } ; { my $client = MongoDB::MongoClient->new( host => 'localhost', port => 27017 ) ; my $database = $client->get_database( 'test' ) ; my $collection = $database->get_collection( 'movies' ) ; my $movies = $collection->find( ) ; # READ while ( my $movie = $movies->next ) { # would prefer for ( @$movies ) {} but oh well my $title = $movie->{ title } ? $movie->{ title } : 'none' ; my $releaseYear = $movie->{ releaseYear } ? $movie->{ releaseYear } : 'none' ; my $count = $movie->{ count } ? $movie->{ count } : 0 ; say qq{$title ($releaseYear) - $count } ; my $id = $movie->{ _id } ; # every mongodb record gets an _id $collection->remove( { _id => $id } ) if $title eq 'none' ; # DELETE $collection->update( { title => $title }, { '$set' => { count => 1 + $count } } ) ; # UPDATE } #LADIES AND GENTLEMEN, WE HAVE CRUD!!! } exit ; { my $client = MongoDB::MongoClient->new( host => 'localhost', port => 27017 ) ; my $database = $client->get_database( 'test' ) ; my $collection = $database->get_collection( 'movies' ) ; my $data = $collection->find( ) ; for my $movie ( @movies ) { say qq{$movie->{ title } ($movie->{ releaseYear })} ; $collection->insert( $movie ) ; # CREATE } }
The lesson might be Don't Trust ORMs, Do It Yourself, but I hope that there's some reason to use these things.