Как мне получить все значения по ключу в наборе анонимных хешей?

Так что я

[{
   "name":"Hanna",
   "surname":"Miles"
},
{
   "name":"John",
   "surname":"Kenston"
}]

в моей базе данных mongo. Я получаю информацию с помощью:

my $people = $self->mongo->get_collection('persons')

Как мне получить список имен? Поэтому в этом случае мне нужно получить @result = ["Hanna", "John"]. Буду признателен за любую помощь!

Привет. get_collection выглядит как метод объекта базы данных для получения коллекции. Из объекта коллекции вам действительно нужно запустить запрос, который возвращает курсор, и из него вы можете выполнить итерацию для получения результатов. (Вы используете официальный драйвер MongoDB или сторонний драйвер?) Я хочу сказать, что неясно, сделали ли вы это уже, и $people содержит результат запроса, как показано, но как написано, $people - это не то, что вы можно просто разыменовать данные в базе данных.

xdg 25.10.2018 14:21
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
1
40
1

Ответы 1

Чтобы получить именно тот результат, который вам нужен, вы можете использовать карта:

my @result = [ map $_->{name}, @$people ];

Но почему вы хотите иметь анонимный массив в массиве?

my @result = map $_->{name}, @$people;

создал бы @result = qw( Hanna John ).

Это правда, если $people содержит ссылку на массив хеш-ссылок, как показано. Но строка кода OP подразумевает, что $people является объектом коллекции, и в этом случае это не сработает, поскольку сначала необходимо запросить коллекцию.

xdg 25.10.2018 14:24

@xdg: Вы правы, я полностью упустил из виду тот факт, что представленный JSON является вводом для mongo, а не выводом запроса.

choroba 25.10.2018 15:01

Другие вопросы по теме