我想在一次调用中从Tarantool中选择几条记录,但看不到如何将多个键传递给space:get
或space:select
答案 0 :(得分:1)
您可以使用Lua以及SQL来实现。
1)在Lua中使用存储过程,如下所示:
function select_several(space_name, index_name, keys)
local obj = index_name == nil and box.space[space_name] or box.space[space_name].index[index_name]
local result = {}
for _, key in pairs(keys) do
table.insert(result, obj:get(key))
end
return result
end
...
select_several('test', nil, {1, 2})
2)从Tarantool 2.0开始,可以使用SQL(前提是您具有空间格式):
box.execute('select * from "test" where "id" in (1, 3);')
答案 1 :(得分:0)
另一个等效于使用LuaFun的SQL查询select * from "test" where "id" in (1, 3)
的变体:
tarantool> box.space.test:pairs():take_while(function (tuple) return tuple.id == 1 or tuple.id == 3 end):totable()
或使用名为“ id”的索引:
tarantool> box.space.test.id:pairs():take_while(function (tuple) return tuple.id == 1 or tuple.id == 3 end):totable()