perl操作MongoDB

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"});
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值