thinkphp 实现 MongoDB CURD

这篇博客介绍了如何在Windows环境下安装MongoDB,包括在php.ini中配置MongoDB扩展,并展示了在PHP框架中配置MongoDB信息的步骤。博主通过示例代码展示了如何使用PHP的Db类插入和查询MongoDB数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用前先下载 Windows下安装 MongoDB_陈卿诺语的博客-优快云博客_windows下安装mongodb

下载完成进行配置

        在php.ini中写入​extension=mongodb

​
extension=mongodb

​

phpinfo查看是否配置成功

 

 框架中配置mongodb信息

// 更多的数据库配置信息
        'mongodb' => [
            // 数据库类型
            'type' => 'mongo',
            // 服务器地址
            'hostname' => '127.0.0.1',
            // 数据库名
            'database' => 'goods',
            // 用户名
            'username' => '',
            // 密码
            'password' => '',
            // 端口
            'hostport' => '27017',
            // 数据库连接参数
            'params' => [],
            // 数据库调试模式
            'debug' => env('database.debug', true),
            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy' => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate' => false,
            // 监听SQL
            'trigger_sql' => true,
            // 读写分离后 主服务器数量
            'master_num' => 1,
            // 指定从服务器序号
            'slave_no' => '',
            // 是否严格检查字段是否存在
            'fields_strict' => true,
            // 是否需要断线重连
            'break_reconnect' => false,
            // 字段缓存路径
            'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
        ]

    public function index()
    {
        // 接收参数
        $postData = [
            'name'=>'我口袋只剩玫瑰一片,此行山高又路远。',
            'age'=>18,
            'address'=>'上海'
        ];
        Db::connect('mongodb')->table('goods')->insert($postData);

        $res = Db::connect('mongodb')
            ->table('goods')
//            ->where('name','like',"玫瑰")
//              ->where('_id','62c7ec1b7a5d0000b60049a3')
            ->select();
//            ->delete();
        dd($res);
    }

 

### ThinkPHP ORM与MongoDB的集成和使用 #### 继承特定模型类实现MongoDB的支持 为了使自定义的数据模型能够操作Mongo数据库,在创建模型时需让其继承`Think\Model\MongoModel`。这使得该模型具备了针对MongoDB的操作能力[^1]。 ```php namespace app\index\model; use Think\Model\MongoModel; class UserModel extends MongoModel { protected $collection = 'users'; } ``` #### 利用事务保障数据一致性 在某些业务逻辑中,可能涉及到多条记录的同时修改或新增,此时可以利用事务特性来保证这些操作要么全部成功执行,要么完全不发生,以此维持数据的一致性。对于高一致性的需求场景,ThinkMongo提供了对MongoDB事务处理的支持功能[^2]。 ```php try{ //开启事务 Db::startTrans(); //一系列增删改查操作... //提交事务 Db::commit(); }catch(\Exception $e){ //回滚事务 Db::rollback(); } ``` #### 复杂查询条件下的数据检索与更新 当面对较为复杂的查询条件时,可借助于查询构建器完成更加灵活精准的数据查找工作,并能方便地实施后续的数据更改动作。下面的例子展示了如何定位到状态为激活且用户名字匹配指定字符串的用户对象,并对其属性做出调整再保存至数据库中[^3]。 ```php $user = new UserModel; $user->where(['status'=>1,'name'=>'liuchen'])->find(); if($user){ $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save(); } ``` #### 连接配置中的细节设置 连接MongoDB实例的过程中,会涉及一些必要的参数设定,比如默认使用的数据库名称等信息可以在相应的连接函数内部进行规定。这部分代码片段来自TP框架内用于建立Mongodb链接的部分源码展示[^4]。 ```php $dbName = $dbName ?: $this->dbName; $this->mongoClient->$dbName->command(/*命令体*/); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值