cpan安装MongoDB:
perl -MCPAN -e 'install MongoDB'
example:
use MongoDB;
my $connection = MongoDB::Connection->new( host => 'localhost', port => 27017 );
my $database = $connection->dbname;
my $collection = $database->tablename;
my $data = $collection->find({'key' => 'value'});
//select * from table where key = 'value' or $collection->find_one() limit 1
while (my $object = $data->next()) {
foreach my $key (keys %{$object}) {
say "$key => ${$object}{$key}";
}
}
$collection->update({'key' => "value"}, {'$set' => { 'mykey' => 'myvalue'}});
//update table set mykey = 'myvalue' where key = 'value'
一些sql语句的例子:
<CREATE TABLE USERS (a Number, b Number)>
Implicit, can be done explicitly.
Implicit, can be done explicitly.
<INSERT INTO USERS VALUES(1,1)>
$db->users->insert({a => 1, b => 1});
<SELECT a,b FROM users>
$db->users->find({}, {a => 1, b => 1});
<SELECT * FROM users>
$db->users->find;
<SELECT * FROM users WHERE age=33>
$db->users->find({age => 33})
<SELECT a,b FROM users WHERE age=33>
$db->users->find({age => 33}, {a => 1, b => 1});
<SELECT * FROM users WHERE age=33 ORDER BY name>
$db->users->find({age => 33})->sort({name => 1});
<<SELECT * FROM users WHERE age>33>>
$db->users->find({age => {'$gt' => 33}})
<<SELECT * FROM users WHERE age<33>>
$db->users->find({age => {'$lt' => 33}})
<SELECT * FROM users WHERE name LIKE "%Joe%">
$db->users->find({name => qr/Joe/});
<SELECT * FROM users WHERE name LIKE "Joe%">
$db->users->find({name => qr/^Joe/});
<<SELECT * FROM users WHERE age>33 AND age<=40>>
$db->users->find({age => {'$gt' => 33, '$lte' => 40}});
<SELECT * FROM users ORDER BY name DESC>
$db->users->find->sort({name => -1});
<CREATE INDEX myindexname ON users(name)>
$db->users->ensure_index({name => 1});
<CREATE INDEX myindexname ON users(name,ts DESC)>
$db->users->ensure_index(Tie::IxHash->new(name => 1, ts => -1));
<SELECT * FROM users WHERE a=1 and b='q'>
$db->users->find({a => 1, b => "q"});
<SELECT * FROM users LIMIT 10 SKIP 20>
$db->users->find->limit(10)->skip(20);
<SELECT * FROM users WHERE a=1 or b=2>
$db->users->find({'$or' => [{a => 1}, {b => 2}]});
<SELECT * FROM users LIMIT 1>
$db->users->find->limit(1);
<EXPLAIN SELECT * FROM users WHERE z=3>
$db->users->find({z => 3})->explain;
<SELECT DISTINCT last_name FROM users>
$db->run_command({distinct => "users", key => "last_name"});
<SELECT COUNT(*y) FROM users>
$db->users->count;
<<SELECT COUNT(*y) FROM users where age > 30>>
$db->users->find({"age" => {'$gt' => 30}})->count;
<SELECT COUNT(age) from users>
$db->users->find({age => {'$exists' => 1}})->count;
<UPDATE users SET a=1 WHERE b='q'>
$db->users->update({b => "q"}, {'$set' => {a => 1}});
<UPDATE users SET a=a+2 WHERE b='q'>
$db->users->update({b => "q"}, {'$inc' => {a => 2}});
<DELETE FROM users WHERE z="abc">
$db->users->remove({z => "abc"});