• 我的mongoDb之旅(一)


    开发环境

    php版本:7.0.10

    mongodb版本:1.5

    开发框架:tp5

    数据库工具:navicat12formongodb

    可以参考的外部文件链接

    tp5中mongodb的扩展说明:https://www.kancloud.cn/manual/thinkphp5_1/354135

    一、 与mysql的不同之处

    1、集合相当于是表的性质,但是没有字段的维度

    2、在mongodb中,字段名是根据插入数据时的KEY自动生成,不需要提前建好

    3、在mongodb中,一条文档指是就是一条纪录

    二、mongodb操作心得

    1、创建集合

     

    2、操作文档

    (1)新增文档

    php代码:

    public function addUser() // 控制器测试文件下的方法

    {

        $user_model = model('User');

        $data = array(

            'name'=>uniqid(time(),1),

            'age'=>rand(0,2),

            'time'=>time(),

        );

        $user_model->addUser($data);

    }

    /**

     * 添加用户

     * @param type $data

     * @return type

     */

    public function addUser($data) // 模型文件

    {

        return db('user')->insert($data);

    }

    工具视图:

     

    _id是自动生成的自增长ID

    (2)查询单条文档

    public function getUserIofo(){  // 控制器测试文件下的方法

        $user_model = model('User');

        $id = '5d91a751a374a412e800074a';

        $where = array('_id'=>$id);

        $info = $user_model->getUserIofo($where);

        var_dump($info);die;

    }

    /**

     * 根据条件查询单条文档

     * @param $condition

     * @return array|false|PDOStatement|string|Model

     * @throws hinkdbexceptionDataNotFoundException

     * @throws hinkdbexceptionModelNotFoundException

     * @throws hinkexceptionDbException

     */

    public function getUserIofo($condition){  // 模型文件

        return db('user')->where($condition)->find();

    }

    打印出来的结果:

    F:wamp64wwwxxxxxapplicationindexcontrollerTest.php:47:array (size=4)   '_id' =>      object(MongoDBBSONObjectId)[22]       public 'oid' => string '5d91a751a374a412e800074a' (length=24)   'name' => string '15698266415d91a751313156.63813749' (length=33)   'age' => int 0   'time' => int 1569826641

    在tp5中,系统特意增加一个配置

    // 强制把_id转换为id

    'pk_convert_id'  => true,

    增加后,出来的结果就是下面这样的

    F:wamp64wwwxxxxxapplicationindexcontrollerTest.php:47:array (size=4)   'name' => string '15698266415d91a751313156.63813749' (length=33)   'age' => int 0   'time' => int 1569826641   'id' => string '5d91a751a374a412e800074a' (length=24)

    (3)修改文档

    php代码:

    public function saveUser(){  // 控制器测试文件下的方法

        $user_model = model('User');

        $data = array(

            'name'=>'fly',

        );

        $id = '5d91a751a374a412e800074a';

        $where = array('id'=>$id);

        $user_model->editUser($data,$where);

    }

    /**

     * 更新文档

     * @param type $data

     * @param type $condition

     * @return type

     */

    public function editUser($data, $condition)   // 模型文件

    {

        return db('user')->where($condition)->update($data);

    }

    工具视图:

     

    (4)删除文档

    php代码:

    public function deleteUser(){   // 控制器测试文件下的方法

        $user_model = model('User');

        $id = '5d91a751a374a412e800074a';

        $where = array('id'=>$id);

        $user_model->deleteUser($where);

    }

    /**

     * 删除文档

     * @param $condition

     * @return int

     * @throws hinkException

     * @throws hinkexceptionPDOException

     */

    public function deleteUser($condition){    // 模型文件

        return db('user')->where($condition)->delete();

    }

    工具视图:

     

    三、操作总结

    经过以上增、删、改、查的操作后,发现跟原来的TP5中db操作大同小异

  • 相关阅读:
    php实现rpc简单的方法
    统计代码量
    laravel的速查表
    header的参数不能带下划线
    PHP简单实现单点登录功能示例
    phpStorm函数注释的设置
    数据结构基础
    laravel生命周期和核心思想
    深入理解php底层:php生命周期
    Jmeter:实例(性能测试目标)
  • 原文地址:https://www.cnblogs.com/FLy-1992/p/11613011.html
Copyright © 2020-2023  润新知