过滤气钉 LIST

Filtering aerospike LLIST

任何人都可以告诉我如何使用 PHP.

过滤 Aerospike LLIST 容器而不是密钥 return 所有结果

在我的示例中,bin 'notes' 包含许多行的键、标题、描述和类别。我可以使用以下代码检索所有行,但是 我需要对类别进行筛选,并仅获取同一类别中的结果。如果需要 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);

LList.scan方法有一个可选的模块名,函数名参数对,允许你调用一个Lua函数来过滤每个元素。

有一个 example PHP script provided with the client repo, which calls an 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');

按如下方式修改 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));