用perl插入mongodb

时间:2012-03-05 07:13:10

标签: perl mongodb insert

我写了一个脚本来将项目插入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.

1 个答案:

答案 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字符串也不是其中之一。