Вставьте в Mongodb с Perl - PullRequest
       7

Вставьте в Mongodb с Perl

1 голос
/ 05 марта 2012

Я написал скрипт для вставки элементов в 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 Ответ

5 голосов
/ 05 марта 2012

Метод insert в MongoDB::Collection ожидает хэш-ref:

insert ($ object, $ options?)

Вставляет указанный $object в базу данных и возвращает его значение id.$object может быть ссылкой на хеш, ссылкой на массив с четным числом элементов или Tie::IxHash.

Итак, обычный подход заключается в использовании hash-ref и ваших$a это строка, а не хэш-ссылка.Другими параметрами являются array-ref, который может быть легко "приведен" к hash-ref (т.е. он имеет форму [key, value, key, value, ...]) или Tie::IxHash (который является хешем, который поддерживает порядок);Ваша $a строка тоже не из тех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...