据我所知,CouchDB允许使用一些集成的Erlang函数,如sort
(和其他东西)。
再次在JS中进行文本修剪,我想:如果Couch已经构建了这个功能怎么办?也许trim
也整合了?有多少功能可以使用?
如果它们已经在Erlang中完成,为什么我必须使用慢速JS版本?
那么,这就是我的问题:我在哪里可以找到Couch JS函数的完整列表?
结论:它只有少数功能可用而且没有trim
。您可以在couch_query_server.erl
编写自己的函数,然后从源代码重建Couch来测试您的运气。
答案 0 :(得分:2)
CouchDB有三个内置的reduce函数。它们在Erlang中实现并在CouchDB中运行,因此它们比等效的JavaScript函数快得多。
他们是_count
,_sum
和_stats
。您可以找到更多详细信息和示例here。它们在couch_query_server.erl
文件中实现。
此外,您可以使用内置的Erlang功能和功能编写 Native Erlang Query Server 。但请注意,默认情况下它已被禁用。
用于实现本机Erlang查询服务器的CouchDB文档示例:
%% 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) -> erlang:length(Values) end.
它使用Erlang标准库中的proplists:get_value/3
和erlang:length/1
MFA(模块功能Arity)。
修改: This thread可能是一个可能重复的内容,似乎已过时。