2016-07-12 11 views
1

誰でも、キーではなくAerospike LLISTのフィルタをフィルタリングし、PHPを使用してすべての結果を返す方法を教えてください。AerospikeのフィルタリングLLIST

私のケースでは、ビン 'ノート'は、キー、タイトル、desc &カテゴリの多くの行を含んでいます。次のコードを使用してすべての行を取得できますが、 カテゴリでフィルタを実行して、同じカテゴリ内のフィルタのみの結果を取得する必要があります。 udfが必要な場合は、私にudfコードも表示し、フィルタを適用して結果を得る方法を教えてください。

答えて

0

によって呼び出されるには、次のようにUDFを修正するために管理し、それが動作します。

$status = $list->scan($results, 'category_filters', 'filterBy', array($category)); 
によって呼び出されます

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 

2
$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 Luaモジュールを呼び出すクライアント・レポを備えexample PHP scriptがあります:

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'); 
関連する問題