pairs
Поиск кортежа или набора кортежей в заданном пространстве с возможностью поочередного перебора кортежей. Для поиска по конкретному индексу используйте метод box_index-pairs.
Параметры:
-
space_object(space_object) — ссылка на объект -
key(scalar/table) — значение для сопоставления с ключом индекса, которое может быть составным -
iterator— тип итератора. По умолчанию используется тип 'EQ' -
after— кортеж или позиция кортежа (tuple_pos), после которогоpairsначинает поиск. Можно передать пустую строку или box.NULL, чтобы начать поиск с первого кортежа.
Возвращает
Итератор, который можно использовать в цикле for/end или с totable().
- пространство не найдено
- неверный тип
ER_TRANSACTION_CONFLICT— при обнаружении конфликта транзакций в режиме MVCC-транзакций- недопустимая позиция итератора
Факторы сложности: размер индекса, тип индекса.
Сведения о внутренних структурах итераторов см. в документации "Lua Functional library".
Примеры:
Ниже приведено несколько примеров использования pairs с различными
параметрами. Для выполнения этих примеров необходимо выполнить
начальную загрузку экземпляра Tarantool, как описано в
Использование операций с данными.
-- Вставка тестовых данных --tarantool> bands:insert{1, 'Roxette', 1986}bands:insert{2, 'Scorpions', 1965}bands:insert{3, 'Ace of Base', 1987}bands:insert{4, 'The Beatles', 1960}bands:insert{5, 'Pink Floyd', 1965}bands:insert{6, 'The Rolling Stones', 1962}bands:insert{7, 'The Doors', 1965}bands:insert{8, 'Nirvana', 1987}bands:insert{9, 'Led Zeppelin', 1968}bands:insert{10, 'Queen', 1970}---...-- Выборка всех кортежей по первичному индексу --tarantool> for _, tuple in bands:pairs() doprint(tuple)end[1, 'Roxette', 1986][2, 'Scorpions', 1965][3, 'Ace of Base', 1987][4, 'The Beatles', 1960][5, 'Pink Floyd', 1965][6, 'The Rolling Stones', 1962][7, 'The Doors', 1965][8, 'Nirvana', 1987][9, 'Led Zeppelin', 1968][10, 'Queen', 1970]---...-- Выборка всех кортежей со значениями первичного ключа от 3 до 6 --tarantool> for _, tuple in bands:pairs(3, {iterator = "GE"}) doif (tuple[1] > 6) then break endprint(tuple)end[3, 'Ace of Base', 1987][4, 'The Beatles', 1960][5, 'Pink Floyd', 1965][6, 'The Rolling Stones', 1962]---...-- Выборка всех кортежей после указанного кортежа --tarantool> for _, tuple in bands:pairs({}, {after={7, 'The Doors', 1965}}) doprint(tuple)end[8, 'Nirvana', 1987][9, 'Led Zeppelin', 1968][10, 'Queen', 1970]---...