从Tarantool空间获得1条随机记录

问题描述

我有2个条件的查询,每个请求1by1插入空间都会返回1条记录

Box.space.extensions.index.secondary:select(
        {city,0},{limit=1}
    )

示例:

{1}
{2}
{3}

我需要获得每个请求的随机记录。 样本:

{3}
{1}
{2}

解决方法

根据tarantool API,select返回元组数组,因此这是一个常规的L​​ua表,您可以自己操作。 如果要随机化请求中的内容,则需要table.Shuffle。 如果您想从请求中获得一个随机物品,则可以使用tbl[math.random(#tbl)]

这是table.Shuffle代码中的example

function table.Shuffle(tbl)
    for i = #tbl,2,-1 do
        local j = math.random(i)
        tbl[i],tbl[j] = tbl[j],tbl[i]
    end
end