前言:请在测试以下代码之前请安装好MongoDB数据库管理软件以及相关环境配置;本测试案例MongoDB数据库未使用密码访问;1、使用Mongo之前,需要装PHP的mongo扩展,a、访问 http://pecl.php.net/package/mongodb,b、选择最新的版本即可,然后选择你的PHP版本对应的扩展。
前言:请在测试以下代码之前请安装好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数据库的简单操作,如有疑问请文章下留言
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论