PHP Class Cml\Db\MongoDB\MongoDB

See also: http://php.net/manual/zh/set.mongodb.php
Inheritance: extends Cml\Db\Base
Mostrar archivo Open project: linhecheng/cmlphp

Protected Properties

Property Type Description
$sql sql组装

Public Methods

Method Description
__construct ( $conf ) 数据库连接串
__destruct ( ) 析构函数
__get ( string $db ) : resource 魔术方法 自动获取相应db实例
_and ( ) 设置后面的where以and连接
_or ( ) 设置后面的where以or连接
affectedRows ( MongoDB\Driver\WriteResult $handle, integer $type ) : integer 返回INSERT,UPDATE 或 DELETE 查询所影响的记录行数
avg ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed 获取 $avg 的结果
buildSql ( null $offset = null, null $limit = null, boolean $isSelect = false ) : string | array 构建sql
callProcedure ( string $procedureName = '', array $bindParams = [], boolean | true $isSelect = true ) : array | integer 调用存储过程-MongoDb不支持
close ( ) 关闭连接
columns ( string | array $columns = '*' ) 选择列
commit ( ) : boolean 提交事务-MongoDb不支持
conditionFactory ( string $column, array | integer | string $value, string $operator = '=' ) where 语句组装工厂
connect ( string $host, string $username, string $password, string $dbName, string $replicaSet = '', string $engine = '', boolean $pConnect = false ) : mixed Db连接
count ( string $field = '*', boolean $isMulti = false, boolean | string $useMaster = false ) : mixed 获取count(字段名或*)的结果
decrement ( string $key, integer $val = 1, string $field = null, mixed $tablePrefix = null ) : boolean 指定字段的值-1
delete ( string $key = '', boolean $and = true, mixed $tablePrefix = null ) : boolean 根据key值删除数据
get ( string $key, boolean $and = true, boolean | string $useMaster = false, null | string $tablePrefix = null ) : array 根据key取出数据
getAllTableStatus ( ) : array 获取当前数据库中所有表的信息
getDbFields ( string $table, mixed $tablePrefix = null, integer $filter ) : mixed 获取表字段-因为mongodb中collection对字段是没有做强制一制的。这边默认获取第一条数据的所有字段返回
getMongoDbAutoIncKey ( string $collection = 'mongoinckeycol', string $table = 'post' ) : integer 获取自增id-需要先初始化数据 如: db.mongoinckeycol.insert({id:0, 'table' : 'post'}) 即初始化帖子表(post)自增初始值为0
getPk ( string $table, string $tablePrefix = null ) : string 获取表主键 mongo直接返回 '_id'
getTables ( ) : array 获取当前db所有表名
groupBy ( string $column ) 分组 MongoDB中的聚合方式跟 sql不一样。这个操作屏蔽。如果要使用聚合直接使用MongoDB Command
having ( string $column, string $operator = '=', string $value ) having语句 MongoDB不支持此命令
increment ( string $key, integer $val = 1, string $field = null, mixed $tablePrefix = null ) : boolean 指定字段的值+1
insertId ( mixed $link = null ) : integer 获取上一INSERT的主键值
join ( string | array $table, string $on, mixed $tablePrefix = null ) join内联结 MongoDB不支持此命令
lBrackets ( ) 在$or操作中让一组条件支持多个条件
leftJoin ( string | array $table, string $on, mixed $tablePrefix = null ) leftJoin左联结 MongoDB不支持此命令
limit ( integer $offset, integer $limit = 10 ) LIMIT
max ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed 获取 $max 的结果
min ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed 获取 $min 的结果
mongoDbAggregate ( array $pipeline = [], array $options = [], boolean | string $useMaster = false ) : mixed MongoDb的aggregate封装
mongoDbDistinct ( string $field = '' ) : mixed MongoDb的distinct封装
orderBy ( string $column, string $order = 'ASC' ) 排序
rBrackets ( ) $or操作中关闭一组条件支持多个条件,启动另外一组条件
rightJoin ( string | array $table, string $on, mixed $tablePrefix = null ) rightJoin右联结 MongoDB不支持此命令
rollBack ( boolean $rollBackTo = false ) : boolean 回滚事务-MongoDb不支持
runMongoBulkWrite ( string $tableName, MongoDB\Driver\BulkWrite $bulk ) : MongoDB\Driver\WriteResult 执行mongoBulkWrite命令
runMongoCommand ( array $cmd = [], boolean $runOnMaster = true, boolean $returnCursor = false ) : array | MongoDB\Driver\Cursor 执行命令
runMongoQuery ( string $tableName, array $condition = [], array $queryOptions = [], boolean | string $useMaster = false ) : array 执行mongoQuery命令
savePoint ( string $pointName ) : boolean 设置一个事务保存点-MongoDb不支持
select ( integer $offset = null, integer $limit = null, boolean $useMaster = false ) : array 获取多条数据
serverSupportFeature ( integer $version = 3 ) : boolean 判断当前mongod服务是否支持某个版本的特性
set ( string $table, array $data, mixed $tablePrefix = null ) : boolean | integer 根据key 新增 一条数据
startTransAction ( ) : boolean 开启事务-MongoDb不支持
sum ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed 获取 $sum的结果
truncate ( string $tableName ) : boolean 清空集合 这个操作太危险所以直接屏蔽了
union ( string | array $sql, boolean $all = false ) union联结 MongoDB不支持此命令
update ( string $key, array | null $data = null, boolean $and = true, mixed $tablePrefix = null ) : boolean 根据key更新一条数据
version ( PDO $link = null ) : string 获取mysql 版本
whereLike ( string $column, boolean $leftBlur = false, string | integer $value, boolean $rightBlur = false ) where条件组装 LIKE
whereNotLike ( string $column, boolean $leftBlur = false, string | integer $value, boolean $rightBlur = false ) where条件组装 LIKE

Protected Methods

Method Description
parseKey ( string $key, boolean $and = true, boolean $noCondition = false, boolean $noTable = false ) : array 查询语句条件组装
reset ( ) orm参数重置

Private Methods

Method Description
aggregation ( string $field, boolean | string $isMulti = false, string $operation = '$max', boolean | string $useMaster = false ) : mixed 获取聚合的结果
debugLogSql ( string $type = 'Query', string $tableName, array $condition = [], array $options = [] ) Debug模式记录查询语句显示到控制台
getDbName ( ) : string 获取数据库名
getMaster ( ) : MongoDB\Driver\Manager 返回主库连接
getRealTableName ( $table ) : string 获取处理后的表名
getSlave ( ) : MongoDB\Driver\Manager 返回从库连接
logNotSupportMethod ( integer $method ) 记录不支持的方法

Method Details

__construct() public method

数据库连接串
public __construct ( $conf )
$conf

__destruct() public method

析构函数
public __destruct ( )

__get() public method

魔术方法 自动获取相应db实例
public __get ( string $db ) : resource
$db string 要连接的数据库类型
return resource MongoDB 连接标识

_and() public method

设置后面的where以and连接
public _and ( )

_or() public method

设置后面的where以or连接
public _or ( )

affectedRows() public method

返回INSERT,UPDATE 或 DELETE 查询所影响的记录行数
public affectedRows ( MongoDB\Driver\WriteResult $handle, integer $type ) : integer
$handle MongoDB\Driver\WriteResult
$type integer 执行的类型1:insert、2:update、3:delete
return integer

avg() public method

获取 $avg 的结果
public avg ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed
$field string 要统计的字段名
$isMulti boolean | string 结果集是否为多条 默认只有一条。传字符串时此参数为要$group的字段
$useMaster boolean | string 是否使用主库 默认读取从库
return mixed

buildSql() public method

构建sql
public buildSql ( null $offset = null, null $limit = null, boolean $isSelect = false ) : string | array
$offset null 偏移量
$limit null 返回的条数
$isSelect boolean 是否为select调用, 是则不重置查询参数并返回cacheKey/否则直接返回sql并重置查询参数
return string | array

callProcedure() public method

调用存储过程-MongoDb不支持
public callProcedure ( string $procedureName = '', array $bindParams = [], boolean | true $isSelect = true ) : array | integer
$procedureName string 要调用的存储过程名称
$bindParams array 绑定的参数
$isSelect boolean | true 是否为返回数据集的语句
return array | integer | $this

close() public method

关闭连接
public close ( )

columns() public method

选择列
public columns ( string | array $columns = '*' )
$columns string | array 默认选取所有 ['id, 'name'] 选取id,name两列

commit() public method

提交事务-MongoDb不支持
public commit ( ) : boolean
return boolean | $this

conditionFactory() public method

where 语句组装工厂
public conditionFactory ( string $column, array | integer | string $value, string $operator = '=' )
$column string 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
$value array | integer | string
$operator string 操作符

connect() public method

Db连接
public connect ( string $host, string $username, string $password, string $dbName, string $replicaSet = '', string $engine = '', boolean $pConnect = false ) : mixed
$host string 数据库host
$username string 数据库用户名
$password string 数据库密码
$dbName string 数据库名
$replicaSet string replicaSet名称
$engine string 无用
$pConnect boolean 无用
return mixed

count() public method

获取count(字段名或*)的结果
public count ( string $field = '*', boolean $isMulti = false, boolean | string $useMaster = false ) : mixed
$field string Mongo中此选项无效
$isMulti boolean Mongo中此选项无效
$useMaster boolean | string 是否使用主库 默认读取从库
return mixed

decrement() public method

指定字段的值-1
public decrement ( string $key, integer $val = 1, string $field = null, mixed $tablePrefix = null ) : boolean
$key string 操作的key user-id-1
$val integer
$field string 要改变的字段
$tablePrefix mixed 表前缀 不传则获取配置中配置的前缀
return boolean

delete() public method

根据key值删除数据
public delete ( string $key = '', boolean $and = true, mixed $tablePrefix = null ) : boolean
$key string eg: 'user-uid-$uid'
$and boolean 多个条件之间是否为and true为and false为or
$tablePrefix mixed 表前缀 不传则获取配置中配置的前缀
return boolean

get() public method

根据key取出数据
public get ( string $key, boolean $and = true, boolean | string $useMaster = false, null | string $tablePrefix = null ) : array
$key string get('user-uid-123');
$and boolean 多个条件之间是否为and true为and false为or
$useMaster boolean | string 是否使用主库,此选项为字符串时为表前缀$tablePrefix
$tablePrefix null | string 表前缀
return array

getAllTableStatus() public method

获取当前数据库中所有表的信息
public getAllTableStatus ( ) : array
return array

getDbFields() public method

获取表字段-因为mongodb中collection对字段是没有做强制一制的。这边默认获取第一条数据的所有字段返回
public getDbFields ( string $table, mixed $tablePrefix = null, integer $filter ) : mixed
$table string 表名
$tablePrefix mixed 表前缀 为null时代表table已经带了前缀
$filter integer 在MongoDB中此选项无效
return mixed

getMongoDbAutoIncKey() public method

获取自增id-需要先初始化数据 如: db.mongoinckeycol.insert({id:0, 'table' : 'post'}) 即初始化帖子表(post)自增初始值为0
public getMongoDbAutoIncKey ( string $collection = 'mongoinckeycol', string $table = 'post' ) : integer
$collection string 存储自增的collection名
$table string 表的名称
return integer

getPk() public method

获取表主键 mongo直接返回 '_id'
public getPk ( string $table, string $tablePrefix = null ) : string
$table string 要获取主键的表名
$tablePrefix string 表前缀
return string || false

getTables() public method

获取当前db所有表名
public getTables ( ) : array
return array

groupBy() public method

分组 MongoDB中的聚合方式跟 sql不一样。这个操作屏蔽。如果要使用聚合直接使用MongoDB Command
public groupBy ( string $column )
$column string 要设置分组的字段名

having() public method

having语句 MongoDB不支持此命令
public having ( string $column, string $operator = '=', string $value )
$column string 字段名
$operator string 操作符
$value string

increment() public method

指定字段的值+1
public increment ( string $key, integer $val = 1, string $field = null, mixed $tablePrefix = null ) : boolean
$key string 操作的key user-id-1
$val integer
$field string 要改变的字段
$tablePrefix mixed 表前缀 不传则获取配置中配置的前缀
return boolean

insertId() public method

获取上一INSERT的主键值
public insertId ( mixed $link = null ) : integer
$link mixed MongoDdb中此选项无效
return integer

join() public method

join内联结 MongoDB不支持此命令
public join ( string | array $table, string $on, mixed $tablePrefix = null )
$table string | array 表名 要取别名时使用 [不带前缀表名 => 别名]
$on string 联结的条件 如:'c.cid = a.cid'
$tablePrefix mixed 表前缀

lBrackets() public method

在$or操作中让一组条件支持多个条件
public lBrackets ( )

leftJoin() public method

leftJoin左联结 MongoDB不支持此命令
public leftJoin ( string | array $table, string $on, mixed $tablePrefix = null )
$table string | array 表名 要取别名时使用 [不带前缀表名 => 别名]
$on string 联结的条件 如:'c.cid = a.cid'
$tablePrefix mixed 表前缀

limit() public method

LIMIT
public limit ( integer $offset, integer $limit = 10 )
$offset integer 偏移量
$limit integer 返回的条数

max() public method

获取 $max 的结果
public max ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed
$field string 要统计的字段名
$isMulti boolean | string 结果集是否为多条 默认只有一条。传字符串时此参数为要$group的字段
$useMaster boolean | string 是否使用主库 默认读取从库
return mixed

min() public method

获取 $min 的结果
public min ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed
$field string 要统计的字段名
$isMulti boolean | string 结果集是否为多条 默认只有一条。传字符串时此参数为要$group的字段
$useMaster boolean | string 是否使用主库 默认读取从库
return mixed

mongoDbAggregate() public method

MongoDb的aggregate封装
public mongoDbAggregate ( array $pipeline = [], array $options = [], boolean | string $useMaster = false ) : mixed
$pipeline array List of pipeline operations
$options array Command options
$useMaster boolean | string 是否使用主库 默认读取从库
return mixed

mongoDbDistinct() public method

MongoDb的distinct封装
public mongoDbDistinct ( string $field = '' ) : mixed
$field string 指定不重复的字段值
return mixed

orderBy() public method

排序
public orderBy ( string $column, string $order = 'ASC' )
$column string 要排序的字段
$order string 方向,默认为正序

parseKey() protected method

查询语句条件组装
protected parseKey ( string $key, boolean $and = true, boolean $noCondition = false, boolean $noTable = false ) : array
$key string eg: 'forum-fid-1-uid-2'
$and boolean 多个条件之间是否为and true为and false为or
$noCondition boolean 是否为无条件操作 set/delete/update操作的时候 condition为空是正常的不报异常
$noTable boolean 是否可以没有数据表 当delete/update等操作的时候已经执行了table() table为空是正常的
return array eg: ['forum', "`fid` = '1' AND `uid` = '2'"]

rBrackets() public method

$or操作中关闭一组条件支持多个条件,启动另外一组条件
public rBrackets ( )

reset() protected method

orm参数重置
protected reset ( )

rightJoin() public method

rightJoin右联结 MongoDB不支持此命令
public rightJoin ( string | array $table, string $on, mixed $tablePrefix = null )
$table string | array 表名 要取别名时使用 [不带前缀表名 => 别名]
$on string 联结的条件 如:'c.cid = a.cid'
$tablePrefix mixed 表前缀

rollBack() public method

回滚事务-MongoDb不支持
public rollBack ( boolean $rollBackTo = false ) : boolean
$rollBackTo boolean 是否为还原到某个保存点
return boolean | $this

runMongoBulkWrite() public method

执行mongoBulkWrite命令
public runMongoBulkWrite ( string $tableName, MongoDB\Driver\BulkWrite $bulk ) : MongoDB\Driver\WriteResult
$tableName string 执行的mongoCollection名称
$bulk MongoDB\Driver\BulkWrite The MongoDB\Driver\BulkWrite to execute.
return MongoDB\Driver\WriteResult

runMongoCommand() public method

执行命令
public runMongoCommand ( array $cmd = [], boolean $runOnMaster = true, boolean $returnCursor = false ) : array | MongoDB\Driver\Cursor
$cmd array 要执行的Command
$runOnMaster boolean 使用主库还是从库执行 默认使用主库执行
$returnCursor boolean 返回数据还是cursor 默认返回结果数据
return array | MongoDB\Driver\Cursor

runMongoQuery() public method

执行mongoQuery命令
public runMongoQuery ( string $tableName, array $condition = [], array $queryOptions = [], boolean | string $useMaster = false ) : array
$tableName string 执行的mongoCollection名称
$condition array 查询条件
$queryOptions array 查询的参数
$useMaster boolean | string 是否使用主库
return array

savePoint() public method

设置一个事务保存点-MongoDb不支持
public savePoint ( string $pointName ) : boolean
$pointName string
return boolean | $this

select() public method

获取多条数据
public select ( integer $offset = null, integer $limit = null, boolean $useMaster = false ) : array
$offset integer 偏移量
$limit integer 返回的条数
$useMaster boolean 是否使用主库 默认读取从库
return array

serverSupportFeature() public method

判断当前mongod服务是否支持某个版本的特性
public serverSupportFeature ( integer $version = 3 ) : boolean
$version integer 要判断的版本
return boolean

set() public method

根据key 新增 一条数据
public set ( string $table, array $data, mixed $tablePrefix = null ) : boolean | integer
$table string
$data array eg: ['username'=>'admin', 'email'=>'[email protected]']
$tablePrefix mixed 表前缀 不传则获取配置中配置的前缀
return boolean | integer

startTransAction() public method

开启事务-MongoDb不支持
public startTransAction ( ) : boolean
return boolean | $this

sum() public method

获取 $sum的结果
public sum ( string $field = 'id', boolean | string $isMulti = false, boolean | string $useMaster = false ) : mixed
$field string 要统计的字段名
$isMulti boolean | string 结果集是否为多条 默认只有一条。传字符串时此参数为要$group的字段
$useMaster boolean | string 是否使用主库 默认读取从库
return mixed

truncate() public method

清空集合 这个操作太危险所以直接屏蔽了
public truncate ( string $tableName ) : boolean
$tableName string 要清空的表名
return boolean | $this

union() public method

union联结 MongoDB不支持此命令
public union ( string | array $sql, boolean $all = false )
$sql string | array 要union的sql
$all boolean 是否为union all

update() public method

根据key更新一条数据
public update ( string $key, array | null $data = null, boolean $and = true, mixed $tablePrefix = null ) : boolean
$key string eg 'user-uid-$uid' 如果条件是通用whereXX()、表名是通过table()设定。这边可以直接传$data的数组
$data array | null
$and boolean 多个条件之间是否为and true为and false为or
$tablePrefix mixed 表前缀 不传则获取配置中配置的前缀
return boolean

version() public method

获取mysql 版本
public version ( PDO $link = null ) : string
$link PDO
return string

whereLike() public method

where条件组装 LIKE
public whereLike ( string $column, boolean $leftBlur = false, string | integer $value, boolean $rightBlur = false )
$column string 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
$leftBlur boolean 是否开始左模糊匹配
$value string | integer
$rightBlur boolean 是否开始右模糊匹配

whereNotLike() public method

where条件组装 LIKE
public whereNotLike ( string $column, boolean $leftBlur = false, string | integer $value, boolean $rightBlur = false )
$column string 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
$leftBlur boolean 是否开始左模糊匹配
$value string | integer
$rightBlur boolean 是否开始右模糊匹配

Property Details

$sql protected_oe property

sql组装
protected $sql