<?php /*** Mongodb类** examples: * $mongo = new HMongodb("127.0.0.1:11223"); * $mongo->selectDb("test_db"); * 创建索引 * $mongo->ensureIndex("test_table", array("id"=>1), array('unique'=>true)); * 获取表的记录 * $mongo->count("test_table"); * 插入记录 * $mongo->insert("test_table", array("id"=>2, "title"=>"asdqw")); * 更新记录 * $mongo->update("test_table", array("id"=>1),array("id"=>1,"title"=>"bbb")); * 更新记录-存在时更新,不存在时添加-相当于set * $mongo->update("test_table", array("id"=>1),array("id"=>1,"title"=>"bbb"),array("upsert"=>1)); * 查找记录 * $mongo->find("c", array("title"=>"asdqw"), array("start"=>2,"limit"=>2,"sort"=>array("id"=>1))) * 查找一条记录 * $mongo->findOne("$mongo->findOne("ttt", array("id"=>1))", array("id"=>1)); * 删除记录 * $mongo->remove("ttt", array("title"=>"bbb")); * 仅删除一条记录 * $mongo->remove("ttt", array("title"=>"bbb"), array("justOne"=>1)); * 获取Mongo操作的错误信息 * $mongo->getError(); */ class HMongodb { //Mongodb连接 var $mongo; var $curr_db_name; var $curr_table_name; var $error; /** * 构造函数 * 支持传入多个mongo_server(1.一个出问题时连接其它的server 2.自动将查询均匀分发到不同server) * * 参数: * $mongo_server:数组或字符串-array("127.0.0.1:1111", "127.0.0.1:2222")-"127.0.0.1:1111" * $connect:初始化mongo对象时是否连接,默认连接 * $auto_balance:是否自动做负载均衡,默认是 * * 返回值: * 成功:mongo object * 失败:false */ function __construct($mongo_server, $connect=true, $auto_balance=true) { if (is_array($mongo_server)) { $mongo_server_num = count($mongo_server); if ($mongo_server_num > 1 && $auto_balance) { $prior_server_num = rand(1, $mongo_server_num); $rand_keys = array_rand($mongo_server,$mongo_server_num); $mongo_server_str = $mongo_server[$prior_server_num-1]; foreach ($rand_keys as $key) { if ($key != $prior_server_num - 1) { $mongo_server_str .= ',' . $mongo_server[$key]; } } } else { $mongo_server_str = implode(',', $mongo_server); } } else { $mongo_server_str = $mongo_server; } try { $this->mongo = new Mongo($mongo_server, array('connect'=>$connect)); } catch (MongoConnectionException $e) { $this->error = $e->getMessage(); return false; } } function getInstance($mongo_server, $flag=array()) { static $mongodb_arr; if (emptyempty($flag['tag'])) { $flag['tag'] = 'default'; } if (isset($flag['force']) && $flag['force'] == true) { $mongo = new HMongodb($mongo_server); if (emptyempty($mongodb_arr[$flag['tag']])) { $mongodb_arr[$flag['tag']] = $mongo; } return $mongo; } else if (isset($mongodb_arr[$flag['tag']]) && is_resource($mongodb_arr[$flag['tag']])) { return $mongodb_arr[$flag['tag']]; } else { $mongo = new HMongodb($mongo_server); $mongodb_arr[$flag['tag']] = $mongo; return $mongo; } } /** * 连接mongodb server * * 参数:无 * * 返回值: * 成功:true * 失败:false */ function connect() { try { $this->mongo->connect(); return true; } catch (MongoConnectionException $e) { $this->error = $e->getMessage(); return false; } } /** * select db * * 参数:$dbname * * 返回值:无 */ function selectDb($dbname) { $this->curr_db_name = $dbname; } /** * 创建索引:如索引已存在,则返回。 * * 参数: * $table_name:表名 * $index:索引-array("id"=>1)-在id字段建立升序索引 * $index_param:其它条件-是否唯一索引等 * * 返回值: * 成功:true * 失败:false */ function ensureIndex($table_name, $index, $index_param=array()) { $dbname = $this->curr_db_name; $index_param['safe'] = 1; try { $this->mongo->$dbname->$table_name->ensureIndex($index, $index_param); return true; } catch (MongoCursorException $e) { $this->error = $e->getMessage(); return false; } } /** * 插入记录 * * 参数: * $table_name:表名 * $record:记录 * * 返回值: * 成功:true * 失败:false */ function insert($table_name, $record) { $dbname = $this->curr_db_name; try { $this->mongo->$dbname->$table_name->insert($record, array('safe'=>true)); return true; } catch (MongoCursorException $e) { $this->error = $e->getMessage(); return false; } } /** * 查询表的记录数 * * 参数: * $table_name:表名 * * 返回值:表的记录数 */ function count($table_name) { $dbname = $this->curr_db_name; return $this->mongo->$dbname->$table_name->count(); } /** * 更新记录 * * 参数: * $table_name:表名 * $condition:更新条件 * $newdata:新的数据记录 * $options:更新选择-upsert/multiple * * 返回值: * 成功:true * 失败:false */ function update($table_name, $condition, $newdata, $options=array()) { $dbname = $this->curr_db_name; $options['safe'] = 1; if (!isset($options['multiple'])) { $options['multiple'] = 0; } try { $this->mongo->$dbname->$table_name->update($condition, $newdata, $options); return true; } catch (MongoCursorException $e) { $this->error = $e->getMessage(); return false; } } /** * 删除记录 * * 参数: * $table_name:表名 * $condition:删除条件 * $options:删除选择-justOne * * 返回值: * 成功:true * 失败:false */ function remove($table_name, $condition, $options=array()) { $dbname = $this->curr_db_name; $options['safe'] = 1; try { $this->mongo->$dbname->$table_name->remove($condition, $options); return true; } catch (MongoCursorException $e) { $this->error = $e->getMessage(); return false; } } /** * 查找记录 * * 参数: * $table_name:表名 * $query_condition:字段查找条件 * $result_condition:查询结果限制条件-limit/sort等 * $fields:获取字段 * * 返回值: * 成功:记录集 * 失败:false */ function find($table_name, $query_condition, $result_condition=array(), $fields=array()) { $dbname = $this->curr_db_name; $cursor = $this->mongo->$dbname->$table_name->find($query_condition, $fields); if (!emptyempty($result_condition['start'])) { $cursor->skip($result_condition['start']); } if (!emptyempty($result_condition['limit'])) { $cursor->limit($result_condition['limit']); } if (!emptyempty($result_condition['sort'])) { $cursor->sort($result_condition['sort']); } $result = array(); try { while ($cursor->hasNext()) { $result[] = $cursor->getNext(); } } catch (MongoConnectionException $e) { $this->error = $e->getMessage(); return false; } catch (MongoCursorTimeoutException $e) { $this->error = $e->getMessage(); return false; } return $result; } /** * 查找一条记录 * * 参数: * $table_name:表名 * $condition:查找条件 * $fields:获取字段 * * 返回值: * 成功:一条记录 * 失败:false */ function findOne($table_name, $condition, $fields=array()) { $dbname = $this->curr_db_name; return $this->mongo->$dbname->$table_name->findOne($condition, $fields); } /** * 获取当前错误信息 * * 参数:无 * * 返回值:当前错误信息 */ function getError() { return $this->error; } } ?>
相关推荐
7. **API参考**: 要了解更多关于MongoDB PHP驱动的信息,可以查阅以下资源: - 官方GitHub仓库:https://github.com/mongodb/mongo-php-driver - MongoDB官方网站:http://www.mongodb.org/ - PHP官方PECL包...
这很重要,因为不同的PHP版本可能有不兼容的API改动,而32位和64位系统之间也有差异,需要确保使用匹配的软件版本。 标签“php7”和“mongodb”进一步明确了这个扩展的主要功能和所关联的技术。php7指的是PHP 7编程...
MongoDB是一种分布式文档数据库,常用于处理海量数据和构建高性能、可扩展的现代应用程序。在PHP中,可以使用MongoDB PHP Library...请根据实际需求解压并参考这些样本文件,以便更好地理解和实践MongoDB与PHP的集成。
* Mongodb 基本操作API,支持基本类似关系统型数据库的操作接口 * * @version 1.0 * [说明] * * 1:该版本API实现了 Mongodb 中最基本的插入/修改/查询/删除操作的封装 * 2:其它更高级的操作可通过 $this->...
本文实例讲述了php操作mongodb封装类与用法。分享给大家供大家参考,具体如下: 近来学习了mongodb,刚好是做php开发的,随便写了php操作mongodb的封装类. <?php /** * Created by PhpStorm. * User: lee * ...
书中还包含了使用MongoDB的PHP API来编写应用程序的教程,以及如何优化MongoDB的性能。除了基本操作,书中还涵盖了MongoDB的高级特性,如复制和分片(sharding)。 MongoDB之所以吸引人,是因为它提供了一种类似于...
这个包使用原始的Laravel API为MongoDB添加了Eloquent模型和Query构建器的功能。这个库扩展了原始的Laravel类,所以它使用完全相同的方法。 这个包被重命名为mongodb/ laravell -mongodb,因为所有权转移到mongodb,...
从给定的文件信息来看,这是一份关于MongoDB的详尽文档,涵盖了从入门...通过以上分析,我们可以看出,这份文档是MongoDB开发者的重要参考资料,无论是初学者还是经验丰富的开发人员,都能从中获得有价值的信息和指导。
MongoDB与PHP的集成提供了丰富的API,用于执行各种数据库操作,例如查询、更新和删除记录。这里仅展示了最基本的连接和插入操作。要了解更多操作,可以参考以下专题: - 《PHP+MongoDB数据库操作技巧大全》:提供...
此外,NoSQL数据库如MongoDB的集成也是现代Web开发中常见的需求,可能会涉及相关API的使用和数据模型设计。 这份知识图谱还可能涉及其他高级主题,如PHP的OOP(面向对象编程)、设计模式、性能优化、安全实践(如...
这个项目对于开发者来说,是一个很好的学习和参考资源,可以帮助他们理解如何将API接口融入到网页设计中,以及如何构建基本的后台系统来管理网站内容。 首先,让我们深入探讨一下API接口在网站中的应用。API...
API通常需要与数据库进行交互,如MySQL、MongoDB等。关注源码中的数据库连接、查询和更新操作,了解数据模型和存储逻辑。 10. **测试与文档**: 一个完善的API项目会有配套的测试代码和清晰的文档,帮助开发者...
【标题解析】 "slacklogs"是一个项目...综上所述,"slacklogs"项目展示了如何使用现代Web开发技术和工具来解决特定社区的需求,为其他开发者提供了灵感和参考,同时也体现了PHP、Laravel和MongoDB在实际项目中的应用。
这个“PHP完全手册中文版”提供了全面的PHP学习资源,涵盖了从基础概念到高级特性的所有内容,对于初学者和有一定经验的开发者来说都是宝贵的参考资料。 **一、PHP基础知识** 1. **安装与配置**:手册将指导读者...
"手头参考的例子程序代码"提示我们,压缩包中可能包括了用于演示如何使用PHP操作Solr和MongoDB的实例代码,这对于初学者或者开发者来说是非常宝贵的资源,可以帮助他们理解和学习这两个技术的API使用方法和最佳实践...
通常会使用关系型数据库如MySQL或非关系型数据库如MongoDB,根据业务需求进行选择和设计。 四、后端 后端服务器主要负责处理前端的请求,与数据库交互,实现业务逻辑。可能使用的技术栈有Java、Python、Node.js等,...
7. **报警机制**:当服务器出现异常时,可以设置自动报警,如通过邮件、短信或API通知管理员。 通过以上分析,我们可以看出这个PHP服务器监控源代码提供了从数据采集、处理、存储到展示的一整套解决方案。对于想要...
- **数据库设计**:包括用户信息、文件元数据、访问记录等数据的存储,可能使用MySQL或更现代的数据库如MongoDB。 - **云存储API接口**:与各大云服务商的API交互,如使用阿里云OSS SDK进行对象存储操作。 - **...
标题中的"jaothc_SolrPhpClient_tasp4z....这个资源对于想要深入学习PHP与数据库交互,尤其是Solr和MongoDB的开发者来说,是非常有价值的参考资料。通过学习和实践,可以提升在PHP环境中处理不同类型的数据库的能力。
【PHP实例开发源码—企管美图爬虫源码 php版.zip】是一个包含PHP编程...总体来说,这个项目是一个完整的PHP爬虫实例,它涵盖了从网络请求、HTML解析到数据存储的全过程,对于学习和实践PHP爬虫技术具有很高的参考价值。