невозможно получить данные из mongodb с помощью perl (получить неопределенное значение) - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь получить данные из mongodb, используя perl, но я получаю неопределенное значение для переменной $people

my $client = MongoDB::MongoClient->new(host => 
'mongodb://xxx.xxx.xxx.xxx',port=>27017, username => 'xxxx', 
password => 'xxxx');
my $db = $client->get_database("xxx");
my $collection = $db->get_collection("xxx");
my $people = $collection->find_one({"transactionid" => $id});
while (my $p = $people->next) {
    print Dumper $p;
} 

и я хочу получить эти данные:

{
    "_id" : ObjectId("5c453500e2fb4adc98e9fa84"),
    "transactionid" : NumberLong(45282),
    "transactionbillerid" : NumberLong(43137),
    "requesttime" : ISODate("2019-01-21T02:57:04.923Z"),
    "requestmessage" : "xxxxxxxx",
    "responsetime" : ISODate("2019-01-21T02:57:05.236Z"),
    "responsemessage" : "xxx"
}

есть предложения, что-то не так с моим кодом?

1 Ответ

0 голосов
/ 27 января 2019

Я думаю, вы неправильно понимаете значение, возвращаемое find_one().В названии есть большая подсказка, но find_one() возвращает одну запись, а не итератор.

Очевидно, у меня нет доступа к вашим данным, поэтому я не могу подтвердить это, но я ожидаюВы получите то, что хотите, запустив этот код:

my $client = MongoDB::MongoClient->new(
  host     => 'mongodb://xxx.xxx.xxx.xxx',
  port     => 27017,
  username => 'xxxx', 
  password => 'xxxx',
);

my $db = $client->get_database("xxx");
my $collection = $db->get_collection("xxx");

my $person = $collection->find_one({"transactionid" => $id});
print Dumper $person;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...