<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog]]></title> 
<link>http://www.bizeway.net/index.php</link> 
<description><![CDATA[网务通 - 网务公司发展之路]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog]]></copyright>
<item>
<link>http://www.bizeway.net/read.php?</link>
<title><![CDATA[Mongodb MapReduce for PHP 操作 ]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[Mongodb]]></category>
<pubDate>Fri, 26 Oct 2012 03:08:02 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?</guid> 
<description>
<![CDATA[ 
	先生成测试数据： <div><pre class="prettyprint"><p><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pun">&lt;?</span><span class="pln">php</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;ini_set</span><span class="pun">(</span><span class="str">'mongo.native_long'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$instance </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Mongo</span><span class="pun">();</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$instance </span><span class="pun">=</span><span class="pln"> $instance</span><span class="pun">-&gt;</span><span class="pln">selectCollection</span><span class="pun">(</span><span class="str">'test'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'test'</span><span class="pun">);</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> $i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln"> $i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$instance</span><span class="pun">-&gt;</span><span class="pln">insert</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="str">'group_id'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> rand</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">),</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="str">'count'</span><span class="pln"> &nbsp; &nbsp;</span><span class="pun">=&gt;</span><span class="pln"> rand</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">),</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="pun">));</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="pun">}</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> </span><span class="pun">?&gt;</span></span><br /></p></pre><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti">下面让我们使用group操作，根据group_id分组，汇总计算count，用</span><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti">MapReduce实现：</span></div> <div><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti"><br /></span></div> <div><span style="color: #454545; font-family: 'Microsoft Yahei', 微软雅黑, Tahoma, Arial, Helvetica, STHeiti"><span style="line-height: 21px">MapReduc用法：</span></span></div> <div><pre class="prettyprint"><p><span style="text-align: left; line-height: 1.3; font-family: &quot;Courier New&quot;, Courier, monospace; font-size: 13px; white-space: pre-wrap"><span class="pln">db</span><span class="pun">.</span><span class="pln">runCommand</span><span class="pun">(</span></span></p><pre style="padding: 0px; text-align: left; line-height: 1.3; font-family: &quot;Courier New&quot;, Courier, monospace; font-size: 13px; margin-top: 10px; margin-bottom: 10px; white-space: pre-wrap; overflow-x: auto; overflow-y: auto"><span class="pln"> </span><span class="pun">{</span><span class="pln"> mapreduce </span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;collection&gt;</span><span class="pun">,</span><br /><span class="pln"> &nbsp; map </span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;mapfunction&gt;</span><span class="pun">,</span><br /><span class="pln"> &nbsp; reduce </span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;reducefunction&gt;</span><span class="pun">,</span><br /><span class="pln"> &nbsp; </span><span class="kwd">out</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">see output options below</span><span class="pun">&gt;</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> query </span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">query filter </span><span class="kwd">object</span><span class="pun">&gt;]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> sort </span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">sorts the input objects </span><span class="kwd">using</span><span class="pln"> </span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">this</span></span><span class="pln"> key</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Useful</span><span class="pln"> </span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">for</span></span><span class="pln"> optimization</span><span class="pun">,</span><span class="pln"> like sorting </span><span class="kwd">by</span><span class="pln"> the emit key </span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">for</span></span><span class="pln"> fewer reduces</span><span class="pun">&gt;]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> limit </span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">number of objects to </span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">return</span></span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> collection</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> supported </span><span class="kwd">with</span><span class="pln"> sharding</span><span class="pun">&gt;]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> keeptemp</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">true</span></span><span class="pun">&#124;</span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">false</span></span><span class="pun">&gt;]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> finalize </span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;finalizefunction&gt;</span><span class="pun">]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> scope </span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="kwd">object</span><span class="pln"> </span><span class="kwd">where</span><span class="pln"> fields go </span><span class="kwd">into</span><span class="pln"> javascript </span><span class="kwd">global</span><span class="pln"> scope </span><span class="pun">&gt;]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> jsMode </span><span class="pun">:</span><span class="pln"> </span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">true</span></span><span class="pun">]</span><br /><span class="pln"> &nbsp; </span><span class="pun">[,</span><span class="pln"> verbose </span><span class="pun">:</span><span class="pln"> </span><span style="margin: 0px; color: #000091; background-color: inherit"><span class="kwd">true</span></span><span class="pun">]</span><br /><span class="pln"> }</span><br /><span class="pun">);</span></pre><br /></pre>参数说明：</div> <div>mapreduc：要操作的目标集合。</div> <div>map：映射函数（生成键值对序列，作为 reduce 函数参数）。</div> <div>reduce：统计函数。</div> <div>query ：目标记录过滤。</div> <div>sort：目标记录排序。</div> <div>limit：限制目标记录数量。</div> <div>out：统计结果存放集合（不指定则使用临时集合，在客户端断开后自动删除）。</div> <div>keeptemp：是否保留临时集合。</div> <div>finalize：最终处理函数（对 reduce 返回结果进行最终整理后存入结果集合）。</div> <div>score：向 map、reduce、finalize 导入外部变量。</div> <div>verbose ： 显示详细的时间统计信息。</div> <div><pre class="prettyprint"><p><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pun">&lt;?</span><span class="pln">php</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;ini_set</span><span class="pun">(</span><span class="str">'mongo.native_long'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$instance </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Mongo</span><span class="pun">();</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$instance </span><span class="pun">=</span><span class="pln"> $instance</span><span class="pun">-&gt;</span><span class="pln">selectDB</span><span class="pun">(</span><span class="str">'test'</span><span class="pun">);</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$map </span><span class="pun">=</span><span class="pln"> </span><span class="str">'</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;function() {</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;emit(this.group_id, this.count);</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;}</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;'</span><span class="pun">;</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$reduce </span><span class="pun">=</span><span class="pln"> </span><span class="str">'</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;function(key, values) {</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;var sum = 0;</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;for (var index in values) {</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;sum += values[index];</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;}</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;return sum;</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;}</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="str"> &nbsp; &nbsp;'</span><span class="pun">;</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$result </span><span class="pun">=</span><span class="pln"> $instance</span><span class="pun">-&gt;</span><span class="pln">command</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="str">'mapreduce'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'test'</span><span class="pun">,</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="str">'map'</span><span class="pln"> &nbsp; &nbsp; &nbsp; </span><span class="pun">=&gt;</span><span class="pln"> $map</span><span class="pun">,</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="str">'reduce'</span><span class="pln"> &nbsp; &nbsp;</span><span class="pun">=&gt;</span><span class="pln"> $reduce</span><span class="pun">，</span></span></p><p><span style="color: #454545; font-family: 'Microsoft Yahei', 微软雅黑, Tahoma, Arial, Helvetica, STHeiti"><span style="line-height: 21px; white-space: normal"><span class="pun"> </span><span class="pln"> &nbsp; </span><span class="str">'out'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'test_res'</span></span></span></p><p><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="pun">));</span></span></p><p><span class="pln"> &nbsp;</span></p><p><span class="pln"> &nbsp;</span></p><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$resData </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Mongo</span><span class="pun">();</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;$</span></span><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln">resData </span></span><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln">= $instance</span><span class="pun">-&gt;</span><span class="pln">selectDB</span><span class="pun">(</span><span class="str">'test_res'</span><span class="pun">);</span></span><br /><br /><div style="text-align: left"><span class="pln"> &nbsp;$result </span><span class="pun">=</span><span class="pln"> $resData</span><span class="pun">-&gt;</span><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln">find</span><span class="pun">();</span></span></div><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pun"> </span><span class="pln"> &nbsp; </span><span class="com">//$result = iterator_to_array($instance-&gt;{$result['result']}-&gt;find());</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;var_dump</span><span class="pun">(</span><span class="pln">$result</span><span class="pun">);</span></span><br /><span style="color: #454545; line-height: 21px; font-family: &quot;Microsoft Yahei&quot;, 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; white-space: normal"><span class="pln"> &nbsp; &nbsp;</span><span class="pun">?&gt;</span></span><br /></pre></div><br/>Tags - <a href="tag.php?tag=mongo" rel="tag">mongo</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] Mongodb MapReduce for PHP 操作 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>