我的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操作大同小异

原文地址:https://www.cnblogs.com/FLy-1992/p/11613011.html