ThinkPHP5.1使用MongoDB数据库
前言:请在测试以下代码之前请安装好MongoDB数据库管理软件以及相关环境配置;
本测试案例MongoDB数据库未使用密码访问;
1、使用Mongo之前,需要装PHP的mongo扩展**
a、访问 http://pecl.php.net/package/mongodb
b、选择最新的版本即可,然后选择你的PHP版本对应的扩展。
2、然后使用Composer安装扩展包:**
composer require topthink/think-mongo=2.0.*
3、接下来,需要修改数据库配置文件中的相关参数:**
'db_mongo' => [ // 数据库类型 'type' => '\think\mongo\Connection', // 设置查询类 'query' => '\think\mongo\Query', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'test', // 用户名 'username' => '', // 密码 'password' => '', // 端口 'hostport' => '27017', //转换_id成id 'pk_convert_id' => true, ],
4、详细使用请参考(TP官方文档):https://www.kancloud.cn/manual/thinkphp5_1/354135
5、以下对MongoDB数据库的部分操作案例(控制器中)
<?php namespace app\index\controller; use think\Controller; use app\common\model\mongodb\SiteDescription; class Site extends Controller { public function list() { // 分页查询 $param = $this->request->get(); $page = isset($param['page']) ? $param['page'] : 1; $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 20; //$where = ['likes','=',934],['likes','=',934]; $where = [ ['likes','>=', 100], ]; // 查询操作 $resultData = SiteDescription::pageList($where, ['_id'=>-1], $page, $pageSize); var_dump($resultData); } public function add(){ $data = [ 'title'=>'【0000000001】学习程序编写,软件编程,编写逻辑代码', 'description'=>'学习PHP,C语言,Java,C++,C#,GO程序设计语言等;以及数据库管理软件Mysql和MongoDB等', 'by'=>'不懂得就上网络搜索,国内外知名学习编程的网站交流和请教', 'url'=>'http://www.baidu.com', 'tags'=>['c','c++','java','mongodb', 'php', 'NoSQL','go'], 'likes'=>rand(100, 1000), 'created_time'=>time(), 'updated_time'=>time(), ]; var_dump(SiteDescription::add($data)); } public function addMore(){ // 批量插入测试 $data = []; for($i=0;$i<1000;$i++){ $data[] = [ 'title'=>'【'.($i+1).'】学习程序编写,软件编程,编写逻辑代码', 'description'=>'学习PHP,C语言,Java,C++,C#,GO程序设计语言等;以及数据库管理软件Mysql和MongoDB等', 'by'=>'不懂得就上网络搜索,国内外知名学习编程的网站交流和请教', 'url'=>'http://www.baidu.com', 'tags'=>['c','c++','java','mongodb', 'php', 'NoSQL','go'], 'likes'=>rand(100, 1000), 'created_time'=>time(), 'updated_time'=>time(), ]; } var_dump(SiteDescription::addMany($data)); } //修改满足条件的记录 public function update(){ $data = [ 'updated_time'=>time() ]; $where = [ ['likes','<=', 105], ]; $res = SiteDescription::updateOne($data, $where); } }
6、以下对MongoDB数据库的部分操作案例(模型中)
<?php namespace app\common\model\mongodb; use think\Model; use think\Exception; use MongoDB\Driver\BulkWrite; class SiteDescription extends Model { protected $connection = 'db_mongo'; protected $table = 'site_description'; protected $autoWriteTimestamp = true; protected $createTime = 'created_time'; protected $updateTime = 'updated_time'; // 查询列表 // 插入一条记录 public static function add($data) { $siteDescription = new SiteDescription(); $siteDescription->insert($data); // 返回id return $siteDescription->getLastInsID(); } // 更新一条记录 public static function updateOne($data, $where=[]) { $siteDescription = new SiteDescription(); $siteDescription->save($data, $where); // 返回id return $siteDescription->getLastInsID(); } //批量插入 public static function addMany($data) { try{ $siteDescription = new SiteDescription(); $siteDescription->insertAll($data); // 返回ids return $siteDescription->getLastInsID(); }catch(Exception $e){ $e->getMessage(); return false; } } //查询操作 public static function pageList($where, $order, $page, $limit){ $siteDescription = new SiteDescription(); $count = $siteDescription::where($where)->order($order)->count(); $list = $siteDescription::where($where)->order($order)->page($page, $limit)->select()->toArray(); return [ 'page'=>$page, 'pages'=>ceil($count / $limit), 'total'=>$count, 'list'=>$list, ]; } }
7、以上就是连接MongoDB数据库的简单操作,如有疑问请文章下留言
发表评论 取消回复