class MongoDB extends Base

Orm MongoDB数据库MongoDB实现类

Methods

__construct($conf)

数据库连接串

array
getTables()

获取当前db所有表名

array
getAllTableStatus()

获取当前数据库中所有表的信息

mixed
getDbFields( string $table, mixed $tablePrefix = null, int $filter)

获取表字段-因为mongodb中collection对字段是没有做强制一制的。这边默认获取第一条数据的所有字段返回

array
get( string $key, bool $and = true, bool|string $useMaster = false, null|string $tablePrefix = null)

根据key取出数据

array
runMongoQuery( string $tableName, array $condition = array(), array $queryOptions = array(), bool|string $useMaster = false)

执行mongoQuery命令

WriteResult
runMongoBulkWrite( string $tableName, BulkWrite $bulk)

执行mongoBulkWrite命令

array|Cursor
runMongoCommand( array $cmd = array(), bool $runOnMaster = true, bool $returnCursor = false)

执行命令

bool|int
set( string $table, array $data, mixed $tablePrefix = null)

根据key 新增 一条数据

bool|array
setMulti( string $table, array $field, array $data, mixed $tablePrefix = null, bool $openTransAction = true)

新增多条数据

boolean
update( string|array $key, array $data = null, bool $and = true, mixed $tablePrefix = null)

根据key更新一条数据

boolean
delete( string $key = '', bool $and = true, mixed $tablePrefix = null)

根据key值删除数据

boolean
truncate( string $tableName)

清空集合 这个操作太危险所以直接屏蔽了

string
getPk( string $table, string $tablePrefix = null)

获取表主键 mongo直接返回 '_id'

conditionFactory( string $column, array|int|string $value, string $operator = '=')

where 语句组装工厂

$this
whereLike( string $column, bool $leftBlur = false, string $value, bool $rightBlur = false)

where条件组装 LIKE

$this
whereNotLike( string $column, bool $leftBlur = false, string $value, bool $rightBlur = false)

where条件组装 LIKE

$this
columns( string|array $columns = '*')

选择列

$this
orderBy( string $column, string $order = 'ASC')

排序

$this
groupBy( string $column)

分组 MongoDB中的聚合方式跟 sql不一样。这个操作屏蔽。如果要使用聚合直接使用MongoDB Command

$this
having( string $column, string $operator = '=', string $value)

having语句 MongoDB不支持此命令

$this
join( string|array $table, string $on, mixed $tablePrefix = null)

join内联结 MongoDB不支持此命令

$this
leftJoin( string|array $table, string $on, mixed $tablePrefix = null)

leftJoin左联结 MongoDB不支持此命令

$this
rightJoin( string|array $table, string $on, mixed $tablePrefix = null)

rightJoin右联结 MongoDB不支持此命令

$this
union( string|array $sql, bool $all = false)

union联结 MongoDB不支持此命令

$this
_and()

设置后面的where以and连接

$this
_or()

设置后面的where以or连接

$this
lBrackets()

在$or操作中让一组条件支持多个条件

$this
rBrackets()

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

$this
limit( int $offset, int $limit = 10)

LIMIT

mixed
count( string $field = '*', bool $isMulti = false, bool|string $useMaster = false)

获取count(字段名或*)的结果

mixed
max( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $max 的结果

mixed
min( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $min 的结果

mixed
sum( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $sum的结果

mixed
avg( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $avg 的结果

mixed
mongoDbDistinct( string $field = '')

MongoDb的distinct封装

mixed
mongoDbAggregate( array $pipeline = array(), array $options = array(), bool|string $useMaster = false)

MongoDb的aggregate封装

int
getMongoDbAutoIncKey( string $collection = 'mongoinckeycol', string $table = 'post')

获取自增id-需要先初始化数据 如: db.mongoinckeycol.insert({id:0, 'table' : 'post'}) 即初始化帖子表(post)自增初始值为0

string|array
buildSql( null $offset = null, null $limit = null, bool $isSelect = false)

构建sql

array
select( int $offset = null, int $limit = null, bool $useMaster = false)

获取多条数据

int
affectedRows( resource $handle, int $type)

返回INSERT,UPDATE 或 DELETE 查询所影响的记录行数

int
insertId( resource $link = null)

获取上一INSERT的主键值

resource|false
__get( string $db)

魔术方法 自动获取相应db实例

mixed
connect( string $host, string $username, string $password, string $dbName, string $replicaSet = '', string $engine = '', bool $pConnect = false)

Db连接

bool
increment( string $key, int $val = 1, string $field = null, mixed $tablePrefix = null)

指定字段的值+1

bool
decrement( string $key, int $val = 1, string $field = null, mixed $tablePrefix = null)

指定字段的值-1

close()

关闭连接

string
version( resource $link = null)

获取mysql 版本

bool
startTransAction()

开启事务-MongoDb不支持

bool
commit()

提交事务-MongoDb不支持

bool
savePoint( string $pointName)

设置一个事务保存点-MongoDb不支持

bool
rollBack( bool $rollBackTo = false)

回滚事务-MongoDb不支持

array|int
callProcedure( string $procedureName = '', array $bindParams = array(), bool|true $isSelect = true)

调用存储过程-MongoDb不支持

bool
serverSupportFeature( int $version = 3)

判断当前mongod服务是否支持某个版本的特性

Details

at line line 74
__construct($conf)

数据库连接串

Parameters

$conf

at line line 85
array getTables()

获取当前db所有表名

Return Value

array

at line line 110
array getAllTableStatus()

获取当前数据库中所有表的信息

Return Value

array

at line line 160
mixed getDbFields( string $table, mixed $tablePrefix = null, int $filter)

获取表字段-因为mongodb中collection对字段是没有做强制一制的。这边默认获取第一条数据的所有字段返回

Parameters

string $table 表名
mixed $tablePrefix 表前缀,不传则获取配置中配置的前缀
int $filter 0 获取表字段详细信息数组 1获取字段以,号相隔组成的字符串

Return Value

mixed

at line line 208
array get( string $key, bool $and = true, bool|string $useMaster = false, null|string $tablePrefix = null)

根据key取出数据

Parameters

string $key get('user-uid-123');
bool $and 多个条件之间是否为and true为and false为or
bool|string $useMaster 是否使用主库 默认读取从库 此选项为字符串时为表前缀$tablePrefix
null|string $tablePrefix 表前缀

Return Value

array

at line line 236
array runMongoQuery( string $tableName, array $condition = array(), array $queryOptions = array(), bool|string $useMaster = false)

执行mongoQuery命令

Parameters

string $tableName 执行的mongoCollection名称
array $condition 查询条件
array $queryOptions 查询的参数
bool|string $useMaster 是否使用主库

Return Value

array

at line line 295
WriteResult runMongoBulkWrite( string $tableName, BulkWrite $bulk)

执行mongoBulkWrite命令

Parameters

string $tableName 执行的mongoCollection名称
BulkWrite $bulk The MongoDB\Driver\BulkWrite to execute.

Return Value

WriteResult

at line line 361
array|Cursor runMongoCommand( array $cmd = array(), bool $runOnMaster = true, bool $returnCursor = false)

执行命令

Parameters

array $cmd 要执行的Command
bool $runOnMaster 使用主库还是从库执行 默认使用主库执行
bool $returnCursor 返回数据还是cursor 默认返回结果数据

Return Value

array|Cursor

at line line 392
bool|int set( string $table, array $data, mixed $tablePrefix = null)

根据key 新增 一条数据

Parameters

string $table
array $data eg: ['username'=>'admin', 'email'=>'linhechengbush@live.com']
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

bool|int

at line line 424
bool|array setMulti( string $table, array $field, array $data, mixed $tablePrefix = null, bool $openTransAction = true)

新增多条数据

Parameters

string $table
array $field 字段 eg: ['title', 'msg', 'status', 'ctime‘]
array $data eg: 多条数据的值 [['标题1', '内容1', 1, '2017'], ['标题2', '内容2', 1, '2017']]
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀
bool $openTransAction 是否开启事务 默认开启

Return Value

bool|array

Exceptions

InvalidArgumentException

at line line 443
boolean update( string|array $key, array $data = null, bool $and = true, mixed $tablePrefix = null)

根据key更新一条数据

Parameters

string|array $key eg 'user-uid-$uid' 如果条件是通用whereXX()、表名是通过table()设定。这边可以直接传$data的数组
array $data | null $data eg: ['username'=>'admin', 'email'=>'linhechengbush@live.com']
bool $and 多个条件之间是否为and true为and false为or
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

boolean

at line line 481
boolean delete( string $key = '', bool $and = true, mixed $tablePrefix = null)

根据key值删除数据

Parameters

string $key eg: 'user-uid-$uid'
bool $and 多个条件之间是否为and true为and false为or
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

boolean

at line line 524
boolean truncate( string $tableName)

清空集合 这个操作太危险所以直接屏蔽了

Parameters

string $tableName 要清空的表名

Return Value

boolean

at line line 538
string getPk( string $table, string $tablePrefix = null)

获取表主键 mongo直接返回 '_id'

Parameters

string $table 要获取主键的表名
string $tablePrefix 表前缀

Return Value

string || false

at line line 551
conditionFactory( string $column, array|int|string $value, string $operator = '=')

where 语句组装工厂

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
array|int|string $value
string $operator 操作符

Exceptions

Exception

at line line 701
$this whereLike( string $column, bool $leftBlur = false, string $value, bool $rightBlur = false)

where条件组装 LIKE

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
bool $leftBlur 是否开始左模糊匹配
string $value |int $value
bool $rightBlur 是否开始右模糊匹配

Return Value

$this

at line line 721
$this whereNotLike( string $column, bool $leftBlur = false, string $value, bool $rightBlur = false)

where条件组装 LIKE

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
bool $leftBlur 是否开始左模糊匹配
string $value |int $value
bool $rightBlur 是否开始右模糊匹配

Return Value

$this

at line line 738
$this columns( string|array $columns = '*')

选择列

Parameters

string|array $columns 默认选取所有 ['id, 'name'] 选取id,name两列,['article.id' => 'aid', 'article.title' => 'article_title'] 别名

Return Value

$this

at line line 757
$this orderBy( string $column, string $order = 'ASC')

排序

Parameters

string $column 要排序的字段
string $order 方向,默认为正序

Return Value

$this

at line line 770
$this groupBy( string $column)

分组 MongoDB中的聚合方式跟 sql不一样。这个操作屏蔽。如果要使用聚合直接使用MongoDB Command

Parameters

string $column 要设置分组的字段名

Return Value

$this

at line line 785
$this having( string $column, string $operator = '=', string $value)

having语句 MongoDB不支持此命令

Parameters

string $column 字段名
string $operator 操作符
string $value

Return Value

$this

at line line 800
$this join( string|array $table, string $on, mixed $tablePrefix = null)

join内联结 MongoDB不支持此命令

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
string $on 联结的条件 如:'c.cid = a.cid'
mixed $tablePrefix 表前缀

Return Value

$this

at line line 815
$this leftJoin( string|array $table, string $on, mixed $tablePrefix = null)

leftJoin左联结 MongoDB不支持此命令

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
string $on 联结的条件 如:'c.cid = a.cid'
mixed $tablePrefix 表前缀

Return Value

$this

at line line 830
$this rightJoin( string|array $table, string $on, mixed $tablePrefix = null)

rightJoin右联结 MongoDB不支持此命令

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
string $on 联结的条件 如:'c.cid = a.cid'
mixed $tablePrefix 表前缀

Return Value

$this

at line line 844
$this union( string|array $sql, bool $all = false)

union联结 MongoDB不支持此命令

Parameters

string|array $sql 要union的sql
bool $all 是否为union all

Return Value

$this

at line line 855
$this _and()

设置后面的where以and连接

Return Value

$this

at line line 866
$this _or()

设置后面的where以or连接

Return Value

$this

at line line 877
$this lBrackets()

在$or操作中让一组条件支持多个条件

Return Value

$this

at line line 888
$this rBrackets()

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

Return Value

$this

at line line 902
$this limit( int $offset, int $limit = 10)

LIMIT

Parameters

int $offset 偏移量
int $limit 返回的条数

Return Value

$this

at line line 918
mixed count( string $field = '*', bool $isMulti = false, bool|string $useMaster = false)

获取count(字段名或*)的结果

Parameters

string $field 要统计的字段名
bool $isMulti 结果集是否为多条 默认只有一条
bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

at line line 938
mixed max( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $max 的结果

Parameters

string $field 要统计的字段名
bool|string $isMulti 结果集是否为多条 默认只有一条。传字符串时相当于执行了 groupBy($isMulti)
bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

at line line 952
mixed min( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $min 的结果

Parameters

string $field 要统计的字段名
bool|string $isMulti 结果集是否为多条 默认只有一条。传字符串时相当于执行了 groupBy($isMulti)
bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

at line line 966
mixed sum( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $sum的结果

Parameters

string $field 要统计的字段名
bool|string $isMulti 结果集是否为多条 默认只有一条。传字符串时相当于执行了 groupBy($isMulti)
bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

at line line 980
mixed avg( string $field = 'id', bool|string $isMulti = false, bool|string $useMaster = false)

获取 $avg 的结果

Parameters

string $field 要统计的字段名
bool|string $isMulti 结果集是否为多条 默认只有一条。传字符串时相当于执行了 groupBy($isMulti)
bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

at line line 1022
mixed mongoDbDistinct( string $field = '')

MongoDb的distinct封装

Parameters

string $field 指定不重复的字段值

Return Value

mixed

at line line 1043
mixed mongoDbAggregate( array $pipeline = array(), array $options = array(), bool|string $useMaster = false)

MongoDb的aggregate封装

Parameters

array $pipeline List of pipeline operations
array $options Command options
bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

at line line 1064
int getMongoDbAutoIncKey( string $collection = 'mongoinckeycol', string $table = 'post')

获取自增id-需要先初始化数据 如: db.mongoinckeycol.insert({id:0, 'table' : 'post'}) 即初始化帖子表(post)自增初始值为0

Parameters

string $collection 存储自增的collection名
string $table 表的名称

Return Value

int

at line line 1088
string|array buildSql( null $offset = null, null $limit = null, bool $isSelect = false)

构建sql

Parameters

null $offset 偏移量
null $limit 返回的条数
bool $isSelect 是否为select调用, 是则不重置查询参数并返回cacheKey/否则直接返回sql并重置查询参数

Return Value

string|array

at line line 1103
array select( int $offset = null, int $limit = null, bool $useMaster = false)

获取多条数据

Parameters

int $offset 偏移量
int $limit 返回的条数
bool $useMaster 是否使用主库 默认读取从库

Return Value

array

at line line 1129
int affectedRows( resource $handle, int $type)

返回INSERT,UPDATE 或 DELETE 查询所影响的记录行数

Parameters

resource $handle mysql link
int $type 执行的类型1:insert、2:update、3:delete

Return Value

int

at line line 1153
int insertId( resource $link = null)

获取上一INSERT的主键值

Parameters

resource $link

Return Value

int

at line line 1165
resource|false __get( string $db)

魔术方法 自动获取相应db实例

Parameters

string $db 要连接的数据库类型

Return Value

resource|false 数据库 连接标识

at line line 1211
mixed connect( string $host, string $username, string $password, string $dbName, string $replicaSet = '', string $engine = '', bool $pConnect = false)

Db连接

Parameters

string $host 数据库host
string $username 数据库用户名
string $password 数据库密码
string $dbName 数据库名
string $replicaSet replicaSet名称
string $engine 引擎
bool $pConnect 是否为长连接

Return Value

mixed

at line line 1234
bool increment( string $key, int $val = 1, string $field = null, mixed $tablePrefix = null)

指定字段的值+1

Parameters

string $key 操作的key eg: user-id-1
int $val
string $field 要改变的字段
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

bool

at line line 1263
bool decrement( string $key, int $val = 1, string $field = null, mixed $tablePrefix = null)

指定字段的值-1

Parameters

string $key 操作的key user-id-1
int $val
string $field 要改变的字段
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

bool

at line line 1287
close()

关闭连接

at line line 1301
string version( resource $link = null)

获取mysql 版本

Parameters

resource $link

Return Value

string

at line line 1318
bool startTransAction()

开启事务-MongoDb不支持

Return Value

bool

at line line 1329
bool commit()

提交事务-MongoDb不支持

Return Value

bool

at line line 1342
bool savePoint( string $pointName)

设置一个事务保存点-MongoDb不支持

Parameters

string $pointName 保存点名称

Return Value

bool

at line line 1355
bool rollBack( bool $rollBackTo = false)

回滚事务-MongoDb不支持

Parameters

bool $rollBackTo 是否为还原到某个保存点

Return Value

bool

at line line 1370
array|int callProcedure( string $procedureName = '', array $bindParams = array(), bool|true $isSelect = true)

调用存储过程-MongoDb不支持

Parameters

string $procedureName 要调用的存储过程名称
array $bindParams 绑定的参数
bool|true $isSelect 是否为返回数据集的语句

Return Value

array|int

at line line 1383
bool serverSupportFeature( int $version = 3)

判断当前mongod服务是否支持某个版本的特性

Parameters

int $version 要判断的版本

Return Value

bool