<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[Mongodb PHP封装类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:46:05 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	Mongodb PHP封装类<br/><div class="code"><br/>&lt;?php<br/>/**<br/>* Mongodb 基本操作API，支持基本类似关系统型数据库的操作接口<br/>*<br/>* @version 1.0<br/> * &#91;说明&#93;<br/> *<br/> * 1：该版本API实现了 Mongodb 中最基本的插入/修改/查询/删除操作的封装<br/> * 2：其它更高级的操作可通过 $this-&gt;getMongo() 得到原生的对象，更多API请自行查阅 Mongo PHP手册,后续版本将会对增加更多的原生API封装<br/> * 3：该类所有API接口中的 $query 查询参数的使用请以下有关 &#91;查询条件说明文档&#93;<br/> * 4: 如果要存储中文字符，则一定要使用 utf8 的编码．<br/> * 5：有了本类接口基本可以按关系型数据库的概念完成Mongodb的大部分开发操作。<br/> *<br/> * &#91;查询条件说明文档&#93;<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;1)<br/> * 等同：where id=1<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;1,&#039;num&#039;=&gt;10)<br/> * 等同：where id=1 and num=10<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&gt;&#039;)=&gt;5))<br/> * 等同：where id&gt;5<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;!=&#039;)=&gt;5))<br/> * 等同：where id!=5<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&gt;&#039;)=&gt;5, $mongo-&gt;cmd(&#039;&lt;&#039;)=&gt;10))<br/> * 等同：where id&gt;5 and id&lt;10<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;in&#039;)=&gt;array(2,5,6)))<br/> * 等同：where id in (2,5,6)<br/> *<br/> * 参数：array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;%&#039;)=&gt;array(2,1)))<br/> * 等同：where id % 2 = 1<br/> *<br/> * 参数：array($mongo-&gt;cmd(&#039;or&#039;) =&gt; array( array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&gt;&#039;)=&gt;5)), array(&#039;id&#039;=&gt;array($mongo-&gt;cmd(&#039;&lt;&#039;)=&gt;10)) ) )<br/> * 等同：where id&gt;5 or id&lt;10<br/> *<br/> * 参数：array(&#039;username&#039; =&gt; new mongoRegex(&quot;/yhp.*/&quot;)) <br/> * 等同 where&nbsp;&nbsp;username&nbsp;&nbsp;like &quot;%yhp%&quot;<br/> **/<br/>class Library_Mongodb &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * Mongodb 对象句柄<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var object Mongo<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_mongo = null;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 当前选择的数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var object MongoDB<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_db = null;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 修改器命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var string<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_cmd = &#039;$&#039;;<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 调试模式 TRUE 打开 FALSE 关闭<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;const DEBUG = TRUE;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 查询条件映射关系<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @var array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private $_condMap = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&lt;&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;lt&#039;, // id &gt; 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&lt;=&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;lte&#039;, // id &lt;= 10<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&gt;&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;gt&#039;, // id &gt; 5<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&gt;=&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;gte&#039;, // id &gt;= 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;!=&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;ne&#039;, // id != 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;%&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;mod&#039;, // id % 4 = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;in&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;in&#039;, // id in (1,2,3,4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;notin&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;nin&#039;,// id not in (1,2,3,4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;or&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;or&#039;, // id=1 or id=2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;not&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;&#039;not&#039;, // !(id=1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 构造函数<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $config 服务器配置,默认为:<br/>&nbsp;&nbsp;&nbsp;&nbsp; * array(<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;host&#039;=&gt;&#039;localhost&#039;, // 主机名或IP地址<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;port&#039;=&gt;27017, // 端口<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;cmd&#039;=&gt;&#039;$&#039;, // 修改器命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; * )<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function __construct($config = array(&#039;host&#039; =&gt; &#039;xxx&#039;, &#039;port&#039; =&gt; 27017, &#039;username&#039; =&gt; &#039;xxx&#039;, &#039;password&#039; =&gt; &#039;xxx&#039;, &#039;db&#039; =&gt; &#039;xxx&#039;,&nbsp;&nbsp;&#039;cmd&#039; =&gt; &#039;$&#039;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server = sprintf(&quot;mongodb://%s:%s@%s:%s/%s&quot;, $config&#91;&#039;username&#039;&#93;, $config&#91;&#039;password&#039;&#93;, $config&#91;&#039;host&#039;&#93;, $config&#91;&#039;port&#039;&#93;, $config&#91;&#039;db&#039;&#93;);<br/><br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;connect&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_mongo = new MongoClient($server, array(&#039;connect&#039;=&gt;true));// 立即连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;catch (MongoConnectionException $e)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(self::DEBUG) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $e-&gt;getMessage();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;selectDB($config&#91;&#039;db&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isset($config&#91;&#039;cmd&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_cmd = ini_get(&#039;mongo.cmd&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;_cmd == &#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_cmd = &#039;$&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ==================================== 基本操作接口API　================================= */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 向集合(表)中插入新文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1:类似mysql中的: insert into $colName set id=1,name=&#039;name1&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $sets 数据,如: array(&#039;id&#039;=&gt;1,&#039;name&#039;=&gt;&#039;name1&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全操作 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function insert($colName, $sets, $safe=false, $fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col-&gt;insert($sets,array(&#039;w&#039;=&gt;$safe,&#039;fsync&#039;=&gt;$fsync));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;catch (MongoCursorException $e)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 保存文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1:如果 $sets 中有字段 &quot;_id&quot; 的话，则更新对应的文档；否则插入新文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $sets 数据,如: array(&#039;id&#039;=&gt;1,&#039;name&#039;=&gt;&#039;name1&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全操作 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function save($colName, $sets, $safe=false, $fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sets = $this-&gt;_parseId($sets);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = $this-&gt;_getCol($colName)-&gt;save($sets,array(&#039;w&#039;=&gt;$safe,&#039;fsync&#039;=&gt;$fsync));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $ret;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 删除集合中的文档记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1：类似mysql中的: delete from $colName where id=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,如果为空数组的话，则会删除所有记录．具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $delAll 是否删除所以条例查询的记录,默认为 true,当为 false是，类似效果 delete from tab where id=1 limit 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全操作 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function delete($colName,$query=array(),$delAll=true,$safe=false,$fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 删除选项<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;justOne&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;!$delAll,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;w&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$safe,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;fsync&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$fsync,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $col-&gt;remove($query,$options);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 删除整个集合<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1：集合中的索引也会被删除<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function dropCol($colName)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_getCol($colName)-&gt;drop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 更新集合文档记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明:<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1：类似mysql中的: update $colName set name=&#039;mongo&#039; where id=10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $newDoc 要更新的文档记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,如果为空数组则更新所有记录．具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $option 操作选项,可选择项如下；<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;set&#039;：只修改指定的字段（默认值,如果这个键不存在，则创建它。存在则更新）.<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例: update(&#039;user&#039;, array(&#039;name&#039;=&gt;&#039;mongo&#039;), array(&#039;id&#039;=&gt;10));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似: update user set name=&#039;mongo&#039; where id=10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;inc&#039;：将指定的字段累加/减(如果值为负数则是相减,不存在键则创建。字段类型一定要是数字)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;num&#039;=&gt;1), array(&#039;id&#039;=&gt;10), &#039;inc&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似: update user set num=num+1 where id=10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;push&#039;：将文档添加到指定键中（数组），如果键不存在则会自动创建，存在则添加到该键的尾端。<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;comm&#039;=&gt;array(&#039;commid&#039;=&gt;1,&#039;title&#039;=&gt;&#039;title1&#039;)), array(&#039;id&#039;=&gt;1), &#039;push&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：为 id=1 的记录添加一个 comm 的评论字段，该字段对应一个 array(&#039;commid&#039;=&gt;1,&#039;title&#039;=&gt;&#039;title1&#039;) 的新文档。<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;pop&#039;:将指定键中的文档删除（数组）<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;comm&#039;=&gt;array(&#039;commid&#039;=&gt;1)), array(&#039;id&#039;=&gt;1), &#039;pop&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：删除 id=1 的记录中 comm 对应的文档集合中 &#039;commid&#039;=&gt;1 对应的文档.<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;unset&#039;:在文档中删除指定的键<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;name&#039;=&gt;1), array(&#039;id&#039;=&gt;1), &#039;unset&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说: 将 user 集合中将 id=1 对应的文档中的 name 字段删除<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;pull&#039;:删除文档中匹配其值的键<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;name&#039;=&gt;&#039;youname&#039;), array(&#039;id&#039;=&gt;1), &#039;pull&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：将 user 集合中将 id=1 对应的文档中的 name=&#039;youname&#039; 的字段删除<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;addToSet&#039;:如果值不存在就添加（避免重复添加）<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;names&#039;=&gt;&#039;youname&#039;), array(&#039;id&#039;=&gt;1), &#039;addToSet&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：向 user 集合中 id=1 对应的文档中的 names 字段添加 &#039;youname&#039; 这个值(不存在时才添加)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * &#039;replace&#039;：用 $newDoc 新文档替换 $query 所找到的文档<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：update(&#039;user&#039;, array(&#039;newid&#039;=&gt;1,&#039;newnames&#039;=&gt;&#039;name1&#039;), array(&#039;id&#039;=&gt;1), &#039;replace&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 解说：将 user 集合中 id=1 对应的文档用 array(&#039;newid&#039;=&gt;1,&#039;newnames&#039;=&gt;&#039;name1&#039;) 的新文档替换<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $upAll 是否更新找到的所有记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $upsert 如果查询条件不存在时，是否以查询条件和要更新的字段一起新建一个集合<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $safe 是否安全删除 false:不等待服务器的响应直接返回 true:等待服务器的响应(数据非常重要时推荐)<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $fsync 操作后是否立即更新到碰盘,默认情况下由服务器决定<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function update($colName,$newDoc,$query=array(),$option=&#039;set&#039;,$upAll=true,$upsert=false,$safe=false,$fsync=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 重新组合新文档<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($option != &#039;replace&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newDoc = array($this-&gt;cmd($option) =&gt; $newDoc);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 更新条件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$options = array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;upsert&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$upsert,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;multiple&#039;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$upAll,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;w&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$safe,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;fsync&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;&nbsp;&nbsp;&nbsp;$fsync,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $col-&gt;update($query,$newDoc,$options);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 查询文档集,返回二维数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明:<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 1:类似mysql中的 select * from table<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select * from user;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1),array(&#039;num&#039;=&gt;1));<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1 order by num asc;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1),array(&#039;num&#039;=&gt;1),10);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1 order by num asc limit 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 示例：select(&#039;user&#039;,array(&#039;id&#039;,&#039;name&#039;),array(&#039;id&#039;=&gt;1),array(&#039;num&#039;=&gt;1),10,2);<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 类似：select id,name from user where id=1 order by num asc limit 2,10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $fields 结果集返回的字段, array():表示返回所有字段 array(&#039;id&#039;,&#039;name&#039;):表示只返回字段 &quot;id,name&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $sort 排序字段, array(&#039;id&#039;=&gt;1):表示按id字段升序 array(&#039;id&#039;=&gt;-1):表示按id字段降序 array(&#039;id&#039;=&gt;1, &#039;age&#039;=&gt;-1):表示按id升序后再按age降序<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $limit 取多少条记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $skip 跳过多少条(从多少条开始)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function select($colName,$query=array(),$fields=array(),$sort=array(),$limit=0,$skip=0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 结果集偏历<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor&nbsp;&nbsp;= $col-&gt;find($query,$fields);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 排序<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($sort)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;sort($sort);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 跳过记录数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($skip &gt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;skip($skip);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 取多少行记录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($limit &gt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cursor-&gt;limit($limit);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach($cursor&nbsp;&nbsp;as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93; = $this-&gt;_parseArr($row);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 统计文档记录数<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $limit 取多少条记录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param int $skip 跳过多少条<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return unknown<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function count($colName,$query=array(),$limit=0,$skip=0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_getCol($colName)-&gt;count($query,$limit,$skip);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回集合中的一条记录(一维数组)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $fields 结果集返回的字段, array():表示返回所有字段 array(&#039;id&#039;,&#039;name&#039;):表示只返回字段 &quot;id,name&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchRow($colName,$query=array(), $fields=array())&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$col = $this-&gt;_getCol($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 自动处理 &#039;_id&#039; 字段<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;_parseId($query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 处理结果集<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_parseArr($col-&gt;findOne($query,$fields));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回符合条件的文档中字段的值<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $fields 要取其值的字段,默认为 &quot;_id&quot; 字段,类似mysql中的自增主键<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return mixed<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchOne($colName,$query=array(), $fields=&#039;_id&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = $this-&gt;fetchRow($colName,$query,array($fields));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return isset($ret&#91;$fields&#93;) ? $ret&#91;$fields&#93; : false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回查询文档集合集中指定字段的值(一维数组)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $fields 要取其值的字段,默认为 &quot;_id&quot; 字段,类似mysql中的自增主键<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchCol($colName,$query=array(), $fields=&#039;_id&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list = $this-&gt;select($colName,$query,array($fields));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($list as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93; = $row&#91;$fields&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回指定下标的查询文档集合(二维数组)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $colName 集合名<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param array $query 查询条件,具体请看 &#91;查询条件说明文档&#93;<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $fields 要取其值的字段,默认为 &quot;_id&quot; 字段,类似mysql中的自增主键<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function fetchAssoc($colName,$query=array(), $fields=&#039;_id&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list = $this-&gt;select($colName,$query);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($list as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key = $row&#91;$fields&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&#91;&#93;&#91;$key&#93; = $row;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ==================================== 辅助操作接口API　================================= */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回命令或命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $option 命令，如果为空时则返回命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return string<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function cmd($option=&#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 只返回命令前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($option == &#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_cmd;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 如果是操作符<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($this-&gt;_condMap&#91;$option&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$option = $this-&gt;_condMap&#91;$option&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_cmd.$option;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 选择或创建数据库(注意：新创建的数据库如果在关闭连接前没有写入数据将会被自动删除)<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param string $dbname 数据库名<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function selectDB($dbname)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_db = $this-&gt;_mongo-&gt;selectDB($dbname);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 得到所有的数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param boolean $onlyName 是否只返回数据库名的数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function allDB($onlyName=false)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ary = $this-&gt;_mongo-&gt;listDBs();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($onlyName)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($ary&#91;&#039;databases&#039;&#93; as $row)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&#91;&#93; = $row&#91;&#039;name&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $ret;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $ary;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 删除数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function dropDB($dbname)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_mongo-&gt;dropDB($dbname);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 关闭连接<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function close()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_mongo-&gt;close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 得到 Mongo 原生对象，进行其它更高级的操作，详细请看PHP手册<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function getMongo()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_mongo;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 返回最后的错误信息<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return array<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function getError()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_db-&gt;lastError();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ======================= 以下为私有方法 ====================== */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 解析数据组中的&#039;_id&#039;字段(如果有的话)<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function _parseId($arr)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($arr&#91;&#039;_id&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr&#91;&#039;_id&#039;&#93; = new MongoId($arr&#91;&#039;_id&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $arr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 得到集合对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function _getCol($colName)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_db-&gt;selectCollection($colName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 解析数组中的&quot;_id&quot;并且返回<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function _parseArr($arr)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!empty($arr)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret = (array)$arr&#91;&#039;_id&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr&#91;&#039;_id&#039;&#93; = $ret&#91;&#039;$id&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $arr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;//End Class<br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] Mongodb 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.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>