过滤空气动力学LLIST

时间:2016-07-12 08:14:12

标签: php udf aerospike

任何人都可以告诉我如何过滤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);

2 个答案:

答案 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));