Команда ReQL: map
Синтаксис команды
sequence1.map([sequence2, ...], function) → stream array1.map([array2, ...], function) → array r.map(sequence1[, sequence2, ...], function) → stream r.map(array1[, array2, ...], function) → array
Описание
Преобразует каждый элемент одной или нескольких последовательностей, применяя к ним функцию отображения. Если map используется с двумя или более последовательностями, она будет итерироваться по количеству элементов, соответствующему наименьшей последовательности.
Обратите внимание, что map может быть применена только к последовательностям, а не к отдельным значениям. Если вы хотите применить функцию к одному значению/выбору (включая массив), используйте команду do.
Пример: Возвращает первые пять квадратов.
> r.expr([1, 2, 3, 4, 5]).map(lambda val: (val * val)).run(conn)
[1, 4, 9, 16, 25]
Пример: Суммирует элементы трех последовательностей.
> sequence1 = [100, 200, 300, 400]
> sequence2 = [10, 20, 30, 40]
> sequence3 = [1, 2, 3, 4]
> r.map(sequence1, sequence2, sequence3,
lambda val1, val2, val3: (val1 + val2 + val3)).run(conn)
[111, 222, 333, 444]
Пример: Переименовывает поле при получении документов, используя map и merge.
В этом примере поле id переименовывается в user_id при получении документов из таблицы users.
r.table('users').map(
lambda doc: doc.merge({'user_id': doc['id']}).without('id')).run(conn)
Обратите внимание, что в этом случае, row может быть использован как альтернатива анонимной функции, так как он возвращает то же самое значение, что и получает параметр функции:
r.table('users').map(
r.row.merge({'user_id': r.row['id']}).without('id')).run(conn)
Пример: Присваивает каждому супергерою заклятого врага.
r.table('heroes').map(r.table('villains'),
lambda hero, villain: hero.merge({'villain': villain})).run(conn)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/map/