这篇文章介绍的内容是关于分享下mongodb封装的几个方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
这个是我写的php5.6的 ,但是php7以上就不是这样的实现了,大家要是有php7mongodb的封装类可以发我连接,我看看
<?php/**
* Created by sublime.
* User: yuepeng
* Date: 2017/12/1
* Time: 15:44
*/namespace Lib;use MongoClient;//下面是驱动类,现在没有用到,我的版本php5.5,如果是php7就要用到这些类use MongoDB\BSON\ObjectID;use MongoDB\Driver\BulkWrite;use MongoDB\Driver\Command;use MongoDB\Driver\Cursor;use MongoDB\Driver\Exception\AuthenticationException;use MongoDB\Driver\Exception\BulkWriteException;use MongoDB\Driver\Exception\ConnectionException;use MongoDB\Driver\Exception\InvalidArgumentException;use MongoDB\Driver\Exception\RuntimeException;use MongoDB\Driver\Manager;use MongoDB\Driver\Query as MongoQuery;use MongoDB\Driver\ReadPreference;use MongoDB\Driver\WriteConcern;/**
* PHP操作mongodb数据库操作类
*/class MongoDb {
protected $database = ''; protected $mo; /**
* 构造方法
*/
public function __construct() {
$database = DBNAME; $mongo = $this->getConnect(DBSERVER, DBUSER, DBPASS, DBPORT); $this->database = $mongo->$database;
} /**
* 数据库单例方法
* @param $server
* @param $user
* @param $password
* @param $port
* test 测试
* @return Mongo
*/
/*public function getConnect($server, $user, $password, $port)
{
// echo "mongodb://{$server}:{$port}";die;
// $mongo = new MongoClient("mongodb://{$server}:{$port}");
$mongo = new MongoClient("mongodb://{$server}:{$port}");
return $mongo;
}*/
/**
* 数据库单例方法
* @param $server
* @param $user
* @param $password
* @param $port
* @return Mongo
*/
public function getConnect($server, $user, $password, $port) {
if (isset($this->mo)) { return $this->mo;
} else { if (!empty($server)) { if (!empty($port)) { if (!empty($user) && !empty($password)) { $this->mo = new MongoClient("mongodb://{$user}:{$password}@{$server}:{$port}");
} else { $this->mo = new MongoClient("mongodb://{$server}:{$port}");
}
} else { $this->mo = new MongoClient("mongodb://{$server}");
}
} else { $this->mo = new MongoClient();
} return $this->mo;
}
} /**
* 查询表中所有数据
* @param $table
* @param array $where
* @param array $sort
* @param string $limit
* @param string $skip
* @return array|int
*/
public function getAll($table, $where = array(), $sort = array(), $limit = '', $skip = '') {
if (!empty($where)) { $data = $this->database->$table->find($where);
} else { $data = $this->database->$table->find();
} if (!empty($sort)) { $data = $data->sort($sort);
} if (!empty($limit)) { $data = $data->limit($limit);
} if (!empty($skip)) { $data = $data->skip($skip);
} $newData = array(); while ($data->hasNext()) { $newData[] = $data->getNext();
} if (count($newData) == 0) { return 0;
} return $newData;
} /**
* 查询表中所有数据,将_id 对象变成数组
* @param $table
* @param array $where
* @param array $sort
* @param string $limit
* @param string $skip
* @return array
*/
public function getAllArray($table, $where = array(), $sort = array(), $limit = '', $skip = '') {
if (!empty($where)) { $data = $this->database->$table->find($where);
} else { $data = $this->database->$table->find();
} if (!empty($sort)) { $data = $data->sort($sort);
} if (!empty($limit)) { $data = $data->limit($limit);
} if (!empty($skip)) { $data = $data->skip($skip);
} $newData = array(); while ($data->hasNext()) { $newData[] = $data->getNext();
} if (count($newData) == 0) { return 0;
} foreach ($newData as $key => $val) { $id = $val['_id']->{'$id'}; $newData[$key]['_id'] = $id;
} return $newData;
} /**
* 查询指定一条数据
* @param $table
* @param array $where
* @return int
*/
public function getOne($table, $where = array()) {
if (!empty($where)) { $data = $this->database->$table->findOne($where);
} else { $data = $this->database->$table->findOne();
} return $data;
} /**
* 统计个数
* @param $table
* @param array $where
* @return mixed
*/
public function getCount($table, $where = array()) {
if (!empty($where)) { $data = $this->database->$table->find($where)->count();
} else { $data = $this->database->$table->find()->count();
} return $data;
} /**
* 直接执行mongo命令
* @param $sql
* @return array
*/
public function toExcute($sql) {
$result = $this->database->execute($sql); return $result;
} /**
* 分组统计个数
* @param $table
* @param $where
* @param $field
*/
public function groupCount($table, $where, $field) {
$cond = array( array( '$match' => $where,
), array( '$group' => array( '_id' => '$' . $field, 'count' => array('$sum' => 1),
),
), array( '$sort' => array("count" => -1),
),
); $this->database->$table->aggregate($cond);
} /**
* 删除数据
* @param $table
* @param $where
* @return array|bool
*/
public function toDelete($table, $where) {
$re = $this->database->$table->remove($where); return $re;
} /**
* 插入数据
* @param $table
* @param $data
* @return array|bool
*/
public function toInsert($table, $data) {
$re = $this->database->$table->insert($data); return $re;
} /**
* 更新数据
* @param $table
* @param $where
* @param $data
* @return bool
*/
public function toUpdate($table, $where, $data) {
$re = $this->database->$table->update($where, array('$set' => $data)); return $re;
} /**
* 获取唯一数据
* @param $table
* @param $key
* @return array
*/
public function distinctData($table, $key, $query = array()) {
if (!empty($query)) { $where = array('distinct' => $table, 'key' => $key, 'query' => $query);
} else { $where = array('distinct' => $table, 'key' => $key);
} $data = $this->database->command($where); return $data['values'];
}
}?>相关推荐:
注意:请在linux环境下测试或生产使用 青鸟内测是一个移动应用分发系统,支持安卓苹果应用上传与下载,并且还能快捷封装网址为应用。应用内测分发:一键上传APP应用包,自动生成下载链接和二维码,方便用户内测下载。应用封装:一键即可生成app,无需写代码,可视化编辑、 直接拖拽组件制作页面的高效平台。工具箱:安卓证书生成、提取UDID、Plist文件在线制作、IOS封装、APP图标在线制作APP分发:
0
以上就是分享下mongodb封装的几个方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号