class MongoDB extends Base

Orm MongoDB数据库MongoDB实现类

Properties

static protected array $dbInst 多个Model中共享db连接实例 from Base
protected bool $openCache 启用数据缓存 from Base
protected bool $currentQueryUseCache 单独标记当前的query使不使用缓存 from Base
protected int $whereNeedAddAndOrOr where操作需要加上and/or 0 : 初始化两个都不加 1 : 要加and 2: 要加 or from Base
protected array $bindParams 执行sql时绑定的参数 from Base
protected array $conf 配置信息 from Base
string $tablePrefix 表前缀方便外部读取 from Base
protected array $sql
protected array $table 操作的表 from Base
protected array $join 是否内联 [表名 => 条件] from Base
protected array $leftJoin 是否左联结 写法同内联 from Base
protected array $rightJoin 是否右联 写法同内联 from Base
protected string $union UNION 写法同内联 from Base
protected bool $paramsAutoReset orm参数是否自动重置 from Base
protected bool $alwaysClearTable $paramsAutoReset = false 的时候是否清除table.避免快捷方法重复调用table(); from Base
protected bool $alwaysClearColumns $paramsAutoReset = false 的时候是否清除查询的字段信息.主要用于按批获取数据不用多次调用columns(); from Base

Methods

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

定义操作的表

from Base
resource|false
__get(string $db)

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

from Base
bool|false|mixed|resource
connectDb(string $db, bool $reConnect = false)

连接数据库

array
paginate(int $limit, bool $useMaster = false, null|int $page = null)

分页获取数据

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

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

array
getOne(bool $useMaster = false)

获取一条数据

from Base
bool|mixed
getOneValue(string $column, bool $useMaster = false)

获取一列

from Base
array
plunk(string $column, null $key = null, int $limit = null, bool $useMaster = false)

获取数据列值列表

from Base
chunk(int $num = 100, callable $func)

组块结果集-此方法前调用paramsAutoReset无效

from Base
$this
where(string|array $column, string $value = '')

where条件组装 相等

from Base
$this
whereColumn(string $column, string $column2)

where条件组装 两个列相等

from Base
$this
whereRaw(string $where, array $params)

where条件原生条件

from Base
$this
when(bool $condition, callable $trueCallback, callable $falseCallback = null)

根据条件是否成立执行对应的闭包

from Base
$this
whereNot(string $column, string $value)

where条件组装 不等

from Base
$this
whereGt(string $column, string $value)

where条件组装 大于

from Base
$this
whereLt(string $column, string $value)

where条件组装 小于

from Base
$this
whereGte(string $column, string $value)

where条件组装 大于等于

from Base
$this
whereLte(string $column, string $value)

where条件组装 小于等于

from Base
$this
whereIn(string $column, array $value)

where条件组装 in

from Base
$this
whereNotIn(string $column, array $value)

where条件组装 not in

from Base
$this
whereRegExp(string $column, string $value)

where条件组装 REGEXP

from Base
$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

string
filterLike(string $val)

where 用户输入过滤

from Base
$this
whereBetween(string $column, string $value, string $value2 = null)

where条件组装 BETWEEN

from Base
$this
whereNotBetween(string $column, string $value, string $value2 = null)

where条件组装 NOT BETWEEN

from Base
$this
whereNull(string $column)

where条件组装 IS NULL

from Base
$this
whereNotNull(string $column)

where条件组装 IS NOT NULL

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

where 语句组装工厂

$this
_and(callable $callable = null)

设置后面的where以and连接

$this
_or(callable $callable = null)

设置后面的where以or连接

$this
lBrackets()

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

$this
rBrackets()

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

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

选择列

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

LIMIT

$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不支持此命令

filterUnionSql($sql)

No description

from Base
string
parseOn(string $table, array $on)

解析联结的on参数

from Base
$this
paramsAutoReset(bool $autoReset = true, bool $alwaysClearTable = false, bool $alwaysClearColumns = true)

orm参数是否自动重置, 默认在执行语句后会重置orm参数,包含查询的表、字段信息、条件等信息

from Base
reset(bool $must = false)

orm参数重置

clearBindParams()

清空绑定的参数

from Base
$this
resetAndClear()

重置所有orm参数及绑定

from Base
string
arrToCondition(array $arr)

SQL语句条件组装

from Base
array
parseKey(string $key, bool $and = true, bool $noCondition = false, bool $noTable = false)

查询语句条件组装

mixed
getCacheVer(string $table)

根据表名获取cache版本号

from Base
$this
noCache()

标记本次查询不使用缓存

from Base
setCacheVer(string $table)

设置cache版本号

from Base
bool
transaction(callable $query)

执行

from Base
__destruct()

析构函数

from Base
__construct($conf)

数据库连接串

array
getTables()

获取当前db所有表名

array
getAllTableStatus()

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

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

获取表字段-因为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 $queryOptions = [], bool|string $useMaster = false)

执行mongoQuery命令

WriteResult
runMongoBulkWrite(string $tableName, BulkWrite $bulk)

执行mongoBulkWrite命令

array|Cursor
runMongoCommand(array $cmd = [], 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)

新增多条数据

int
replaceInto(string $table, array $data, mixed $tablePrefix = null)

插入或替换一条记录 若AUTO_INCREMENT存在则返回 AUTO_INCREMENT 的值.

int
upSet(string $table, array $data = [], array $up = [], mixed $tablePrefix = null)

插入或更新一条记录,当UNIQUE index or PRIMARY KEY存在的时候更新,不存在的时候插入 若AUTO_INCREMENT存在则返回 AUTO_INCREMENT 的值.

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)

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

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 $options = [], 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的主键值

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 = [], bool|true $isSelect = true)

调用存储过程-MongoDb不支持

bool
serverSupportFeature(int $version = 3)

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

Details

in Base at line 159
$this table(string|array $table = '', mixed $tablePrefix = null)

定义操作的表

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

$this

in Base at line 176
resource|false __get(string $db)

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

Parameters

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

Return Value

resource|false 数据库 连接标识

at line 1246
protected bool|false|mixed|resource connectDb(string $db, bool $reConnect = false)

连接数据库

Parameters

string $db rlink/wlink
bool $reConnect 是否重连--用于某些db如mysql.长连接被服务端断开的情况

Return Value

bool|false|mixed|resource

in Base at line 240
array paginate(int $limit, bool $useMaster = false, null|int $page = null)

分页获取数据

Parameters

int $limit 每页返回的条数
bool $useMaster 是否使用主库 默认读取从库
null|int $page 当前页数-不传则获取配置中var_page配置的request值

Return Value

array

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

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

Parameters

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

Return Value

string || false

in Base at line 274
array getOne(bool $useMaster = false)

获取一条数据

Parameters

bool $useMaster 是否使用主库 默认读取从库

Return Value

array | bool

in Base at line 292
bool|mixed getOneValue(string $column, bool $useMaster = false)

获取一列

Parameters

string $column 列名
bool $useMaster 是否使用主库 默认读取从库

Return Value

bool|mixed

in Base at line 309
array plunk(string $column, null $key = null, int $limit = null, bool $useMaster = false)

获取数据列值列表

Parameters

string $column 列名
null $key 返回数组中为列值指定自定义键(该自定义键必须是该表的其它字段列名)
int $limit 返回的条数
bool $useMaster 是否使用主库 默认读取从库

Return Value

array

in Base at line 326
chunk(int $num = 100, callable $func)

组块结果集-此方法前调用paramsAutoReset无效

Parameters

int $num 每次获取的条数
callable $func 结果集处理函数

in Base at line 363
$this where(string|array $column, string $value = '')

where条件组装 相等

Parameters

string|array $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名) 当$column为数组时 批量设置
string $value |int $value 当$column为数组时 此时$value为false时条件为or 否则为and

Return Value

$this

in Base at line 384
$this whereColumn(string $column, string $column2)

where条件组装 两个列相等

Parameters

string $column eg:username | user.username
string $column2 eg: nickname | user.nickname

Return Value

$this

in Base at line 398
$this whereRaw(string $where, array $params)

where条件原生条件

Parameters

string $where eg:utime > ctime + ?
array $params eg: [10]

Return Value

$this

in Base at line 413
$this when(bool $condition, callable $trueCallback, callable $falseCallback = null)

根据条件是否成立执行对应的闭包

Parameters

bool $condition 条件
callable $trueCallback 条件成立执行的闭包
callable $falseCallback 条件不成立执行的闭包

Return Value

$this

in Base at line 431
$this whereNot(string $column, string $value)