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数据库的简单操作,如有疑问请文章下留言

点赞(2) 打赏

Comment list 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部