我写了一个脚本来将项目插入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);
代码运作良好。
但是当我更改为insert line
到
my $a = "{'user_id' => 123,
'pointA' => 12,
'pointB' => 13,
'total' => 25}";
$user_stats->insert($a);
返回错误后无法正常工作:not a reference at /usr/local/lib/perl5/site_perl/5.12.3/sun4-solaris/MongoDB/Collection.pm line 296.
答案 0 :(得分:5)
insert
method on MongoDB::Collection
需要一个hash-ref:
插入($ object,$ options?)
将给定的
$object
插入数据库并返回其id值。$object
可以是哈希引用,对具有偶数元素的数组的引用,也可以是Tie::IxHash
。
所以,通常的方法是使用hash-ref,你的$a
是一个字符串,而不是hash-ref。其他选项是一个数组引用,可以很容易地“转换”为hash-ref(即它具有形式[key, value, key, value, ...]
)或Tie::IxHash
(这是一个维护顺序的哈希);你的$a
字符串也不是其中之一。