任何人都可以告诉我如何过滤Aerospike LLIST bin而不是使用密钥并使用PHP返回所有结果。
在我的情况下,bin'注意'包含许多行键,标题,desc&类别。我可以使用以下代码检索所有行但是 我需要对类别进行过滤,并获得同一类别中的结果。如果需要udf,请帮助向我展示udf代码以及如何应用过滤器来获得结果。
$db = new Aerospike($config, false);<br/>
$key = $db->initKey('mynamespace', 'myset', $userid);<br/>
$list = new \Aerospike\LDT\LList($db, $key, 'notes');<br/>
$status = $list->scan($results);
答案 0 :(得分:2)
LList.scan方法有一个可选的模块名称,函数名称参数对,允许您调用Lua函数来过滤每个元素。
客户端仓库提供了example PHP script,它调用example Lua模块:
function keyfilters.even_filter(element)
local remainder = -1
if type(element) == "number" then
remainder = element % 2
elseif (getmetatable(element) == getmetatable(map())) and element['key'] then
remainder = element['key'] % 2
end
if remainder == 0 then
return element
else
return nil
end
end
由
调用$rental_history->scan($elements, 'keyfilters', 'even_filter');
答案 1 :(得分:0)
按如下方式管理修改UDF,它可以正常工作。
local category_filters = {}
function category_filters.filterBy(element,val)
if element['category'] == val[1] then
return element
else
return nil
end
end
return category_filters
由
调用$status = $list->scan($results, 'category_filters', 'filterBy', array($category));