Вставьте в Mongodb с Perl
Я написал скрипт для вставки элементов в 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 ответ
insert
метод на MongoDB::Collection
ожидает hash-ref:
вставить ($ объект, $ параметры?)
Вставляет данный
$object
в базу данных и возвращает его значение идентификатора.$object
может быть ссылкой на хеш, ссылкой на массив с четным числом элементов илиTie::IxHash
,
Таким образом, обычный подход заключается в использовании хэш-ссылки и ваш $a
это строка, а не хэш-ссылка. Другие параметры - это ссылка на массив, которую можно легко "привести" к ссылке на хэш (т.е. она имеет вид [key, value, key, value, ...]
) или Tie::IxHash
(это хеш, который поддерживает порядок); ваш $a
Строка тоже не из тех.