perl操作MongoDB

来源:互联网 发布:艾瑞 数据 编辑:程序博客网 时间:2024/06/05 16:43
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.
<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"});