MongoDB PHP数据库查询类
2023-09-14 08:59:48 时间
* 创建索引
* $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"=
* 查找记录
* $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"=
* 删除记录
* $mongo- remove("ttt", array("title"= "bbb"));
* 仅删除一条记录
* $mongo- remove("ttt", array("title"= "bbb"), array("justOne"=
* 获取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;
}
}
$m = new Mongo(); //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017,如果端口是27017,端口可以省略 //⑵标准连接 $m = new Mongo("mongodb://${username}:${password}@localhost");
$mo = new Mongo(); $coll = $mo- selectCollection(db, mycoll);//得到一个collection对象
$c = array(a = 1, s = array($lt = 100)); $newobj = array(e = f, x = y); $options = array(safe = true, multiple = true); $rs = $coll- update($c, $newobj, $options);
$query = array(s = array($lt = 100)); $fields = array(a = true, b = true); $rs = $coll- find($query, $fields);
$query = array(s = array($lt = 100)); $fields = array(a = true, b = true); $rs = $coll- findOne($query, $fields);
$m = new Mongo(); //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017,如果端口是27017,端口可以省略 //⑵标准连接 $m = new Mongo("mongodb://${username}:${password}@localhost");
$mo = new Mongo(); $coll = $mo- selectCollection(db, mycoll);//得到一个collection对象
$c = array(a = 1, s = array($lt = 100)); $newobj = array(e = f, x = y); $options = array(safe = true, multiple = true); $rs = $coll- update($c, $newobj, $options);
$query = array(s = array($lt = 100)); $fields = array(a = true, b = true); $rs = $coll- find($query, $fields);
$query = array(s = array($lt = 100)); $fields = array(a = true, b = true); $rs = $coll- findOne($query, $fields);
相关文章
- mongoVUE对mongodb常用的基础操作
- 【mongodb系统学习之七】mongodb的关闭
- MongoDB · 最佳实践 · 短连接Auth性能优化
- 以源码编译的方式安装PHP与php-fpm
- Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
- 安装 php_mongodb.dll的坑
- 【原创】MongoDB安装配置详解(标注两个坑)
- LZW算法PHP实现方法 lzw_decompress php
- MongoDB的php可视化管理工具
- mongodb的账户管理
- redis和mongodb
- [MongoDB] Remove, update, create document
- Mongodb c#增删改查
- Atitit mongodb 使用总结 1.1. 下载有点不太好下载不像mysql导出都是。。70M1 1.2. gui工具Robomongo(MongoDB/GUI管理工具) v1.0.3 官方
- 如何在SAP云平台上使用MongoDB服务
- MongoDB最简单的入门教程之一 环境搭建
- 【华为云技术分享】MongoDB经典故障系列四:调整oplog大小,引起从库宕机怎么办?
- [转]MongoDB更新操作replaceOne()实例讲解
- [0] C# & MongoDB
- 【MongoDB】The Access control of mongodb
- 【MongoDB】Serveral common command of MongoDb
- Java中MongoDB返回ObjectId的差异
- mongodb系列(二)使用复合索引中要注意字段的前后
- Docker学习笔记17:docker实例之安装 Node.js、PHP、MySQL、Tomcat、Python、Redis、MongoDB、Apache