Dear wiki user,

You have subscribed to a wiki page "Couchdb Wiki" for change notification.

The page "EnableErlangViews" has been deleted by JoanTouzet:

https://wiki.apache.org/couchdb/EnableErlangViews?action=diff&rev1=6&rev2=7

Comment:
Migrated to https://docs.couchdb.org/en/latest/config/query-servers.html

-  <<Include(EditTheWiki)>>
  
- = How to Enable Erlang Views =
- Since version 0.10.0, CouchDB has a native Erlang view server, allowing you 
to write your map/reduce functions in Erlang. There is no-longer the need to 
manually install [[http://github.com/mmcdanie/erlview|erlview]], unless you are 
running an old version of CouchDB.
- 
- First, you'll need to edit your `local.ini` to include a native_query_servers 
section:
- 
- {{{
- [native_query_servers]
- erlang = {couch_native_process, start_link, []}
- }}}
- Your `local.ini` will most likely be at `/usr/local/etc/couchdb/local.ini` or 
`/etc/couchdb/local.ini`. To see these changes you will also need to restart 
the server:
- 
- {{{
- sudo /etc/init.d/couchdb restart
- }}}
- To test out using Erlang views, visit the Futon admin interface, create a new 
database and open a temporary view. You should now be able to select erlang 
from the language drop-down.
- 
- Let's try an example of map/reduce functions which count the total documents 
at each number of revisions (there are x many documents at version "1", and y 
documents at "2"... etc). Add a few documents to the database, then enter the 
following functions as a temporary view:
- 
- {{{
- %% Map Function
- fun({Doc}) ->
-   <<K,_/binary>> = proplists:get_value(<<"_rev">>, Doc, null),
-   V = proplists:get_value(<<"_id">>, Doc, null),
-   Emit(<<K>>, V)
- end.
- 
- %% Reduce Function
- fun(Keys, Values, ReReduce) -> length(Values) end.
- }}}
- If all has gone well, after running the view you should see a list of the 
total number of documents at each revision number.
- 
- == Filters ==
- A simple "doc-type filter" 
([[http://mail-archives.apache.org/mod_mbox/couchdb-user/201302.mbox/<CAFZfYnDo-Z=vz0acphj-lk6zbp-3wz_x0rcw4basqnvush8...@mail.gmail.com>|source]])
- 
- {{{
- fun({Doc}, {Req}) ->
-         DocType = couch_util:get_value(<<"type">>, Doc),
-         case DocType of
-                 undefined -> false;
-                 <<"mytype">> ->       true;
-                 _ -> false
-         end
- end.
- }}}
- Another filter example that receives a values query parameter (comma 
separated), and lets through any design docs, any _deleted docs, and the mytype 
doc only if its value propery is contained in the query parameter 
([[http://mail-archives.apache.org/mod_mbox/couchdb-user/201302.mbox/<CAFZfYnDo-Z=vz0acphj-lk6zbp-3wz_x0rcw4basqnvush8...@mail.gmail.com>|source]])
- 
- {{{
- fun({Doc}, {Req}) ->
-         DocId = couch_util:get_value(<<"_id">>, Doc),
-         DocType = couch_util:get_value(<<"type">>, Doc),
-         DocValue = couch_util:get_value(<<"value">>, Doc),
-         DocDeleted = couch_util:get_value(<<"_deleted">>, Doc),
- 
-         {Query} = couch_util:get_value(<<"query">>,Req, {[]}),
-         ValuesParam = couch_util:get_value(<<"values">>,Query),
-         Values = binary:split(ValuesParam, <<",">>, [global]),
-         case {DocId, DocDeleted}  of
-         {<<"_design/", _/binary>>, _} -> true;
-         {_, true} -> true;
-         _ ->
-                 case DocType of
-                         undefined -> false;
-                         <<"mytype">> -> lists:any(fun(E) -> E =:= DocValue
- end, Values);
-                         _ -> false
-                 end
-         end
- end.
- }}}
- 

Reply via email to