perl操作MongoDB

安装MongoDB驱动支持perl

参考

vim packages.txt

Data::Types
DateTime
DateTime::Tiny
ExtUtils::MakeMaker
File::Slurp
File::Temp
FileHandle
JSON
Test::Exception
Test::Warn
Tie::IxHash
Try::Tiny
boolean
ExtUtils::MakeMaker
Class::Method::Modifiers
DateTime
Digest::MD5
Moose
Tie::IxHash
XSLoader
MongoDB

然后安装cpanm,可以解决依赖。

cat packages.txt | cpanm

perl操作MongoDB

参考

其他

存储json数组数据

#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use diagnostics;
use JSON;
use Encode;
#use URI::Escape;
use Data::Dumper;
use MongoDB ();

require("getcfg.pl");

my($cfgPath,$funcFile) = @ARGV;
my $json = new JSON;
my $host;
my $database;

# 读取配置
sub loadCfg{
        $host = &getcfg($cfgPath, "MongoDB", "host");
        $database = &getcfg($cfgPath, "MongoDB", "database");
}

sub cache{
        my $client = MongoDB::MongoClient->new(host => $host, port => 27017);
        my $db = $client->get_database($database);

        my $collection = $db->get_collection($funcFile);
        open(OUT, $funcFile) or die $!;
        while(<OUT>){
                my $obj = $json->decode($_);
                #say "json数据为:".Dumper($obj);

                for my $item(@{$obj->{'results'}}){
                        say "开始缓存json数据"."$item";
                        #utf8::encode($item);
                        $collection->insert_one($item);
                }
        }
        close OUT;
}

&loadCfg;
&cache;

连接副本集测试: 参考1 参考2

#!/usr/bin/perl

use strict;
use warnings;
use MongoDB ();
use Data::Dumper qw(Dumper);

my $client = MongoDB::MongoClient->new(host => 'mongodb://172.19.238.62:27017,172.19.238.63:27017,172.19.238.64:27017', replica_set_name => 'replication',);
my $db = $client->get_database( 'example_' . $$ . '_' . time );

my $people_coll = $db->get_collection('people');
$people_coll->insert_one( {
    name => 'First',
});
$people_coll->insert_one( {
    name => 'Second',
});
my $people = $people_coll->find;
while (my $p = $people->next) {
    print Dumper $p;
}

$db->drop;

转载于:https://my.oschina.net/u/588736/blog/869257

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值