con*_*dor 1 perl insert mongodb
我写了一个脚本,将项目插入mongodb
#!/usr/bin/perl
use strict;
use warnings;
use MongoDB;
use Data::Dumper;
my $hostname = "localhost";
my $port = 27017;
my $conn = MongoDB::Connection->new( "host" => "$hostname",
"port" => $port );
my $db = $conn->test;
my $user_stats = $db->test_stats;
# Insert line
$user_stats->insert({'user_id' => 123,
'pointA'=> 12,
'pointB' => 13,
'total' => 25, } );
my $myStr = $user_stats->find_one();
print Dumper($myStr);
Run Code Online (Sandbox Code Playgroud)
代码运作良好.但是,当我insert line改为
my $a = "{'user_id' => 123,
'pointA' => 12,
'pointB' => 13,
'total' => 25}";
$user_stats->insert($a);
Run Code Online (Sandbox Code Playgroud)
返回错误不起作用:not a reference at /usr/local/lib/perl5/site_perl/5.12.3/sun4-solaris/MongoDB/Collection.pm line 296.
该insert方法MongoDB::Collection需要一个hash-ref:
insert($ object,$ options?)
将给定数据
$object插入数据库并返回其id值.$object可以是哈希引用,对具有偶数元素的数组的引用,或者Tie::IxHash.
所以,通常的方法是使用hash-ref,你$a是一个字符串,而不是hash-ref.其他选项是一个array-ref,可以很容易地"转换"为hash-ref(即它有表单[key, value, key, value, ...])或a Tie::IxHash(这是一个维护顺序的哈希); 你的$a字符串也不是其中之一.