解析TP框架下mongo的基础操作及其注意点

发布时间 - 2021-09-22 00:00:00    点击率:

下面thinkphp框架教程栏目将给大家介绍关于thinkphp下的mongo的操作,希望对需要的朋友有所帮助!

1.多个条件语句,网上很多只是一个大于或者一个小于,没有2个合并的,如大于2并且小于4的

$where['_string'] = 'this.b > 2 & this.b<4';

2.group

mysql:
$res = $model->where(['sTaskId'=>['$in'=>$task_array]])->group('a')->field('a,sum(a)')->select();

mongodb:
$key = ['a'=>1]; //groupby的字段
$init = ['num'=>0];//统计的初始值
$option = array(
'table' => 'course’, // 表名
'condition’=>['sTaskId'=>['$in'=>$task_array]], //group中过滤条件
);
//必须要带option
$reduce = "function(obj, prev){prev.num = prev.num+obj.a}";
$model = new TestModel();
$res = $model->group($key, $init, $reduce, $option);
这里讲一下tp的mongo扩展是有问题的,在group里调用where会无效,具体解决方案是要在mongo.class.php文件
a.把$query改为如下:
$query  =  $this->parseWhere(isset($options['condition'])?$options['condition']:array());
当然$this->queryStr  也要改的
b.把$group改为:
$group = $this->_collection->group($keys,$initial,$reduce,$query);

3.如果你要用model模型去查询,并且你的主配置是mysql,那就需要先在配置文件配置

'mongo' => [
DB_TYPE =>  mongo            
DB_HOST => localhost   
DB_NAME => test
DB_PORT =>  40000
DB_PREFIX =>'' 
DB_USER => ''
DB_PWD => ''
],

然后在model文件里配置,
  a.protected $trueTableName = '表名';
  b.protected $connection  = '驱动名,这里是mongo';
  c.该model继承MongoModel

4.批量更新

mysql里只要$res = $model->save(['a'=>1']);
mongo的话需要写成$res = $model->where([])->save(['a'=>1]);

5.mongo注意点:

mongo对于数据类型的控制比较严格,如果你存个int的1,用'1'去查是查不到的!
推荐:《最新的10个thinkphp视频教程》


# php  # mongodb  # mysql  # thinkphp  # 继承  # protected  # 如果你  # 是有  # 那就  # 多个  # 也要  # 要在  # 要用  # 只是一个  # 先在  # 要带 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 教你用AI润色文章,让你的文字表达更专业  简单实现Android文件上传  清除minerd进程的简单方法  使用Dockerfile构建java web环境  香港服务器如何优化才能显著提升网站加载速度?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  如何在VPS电脑上快速搭建网站?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  简历在线制作网站免费版,如何创建个人简历?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  QQ浏览器网页版登录入口 个人中心在线进入  如何为不同团队 ID 动态生成多个“认领值班”按钮  JavaScript模板引擎Template.js使用详解  网站制作免费,什么网站能看正片电影?  大型企业网站制作流程,做网站需要注册公司吗?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Python函数文档自动校验_规范解析【教程】  成都网站制作公司哪家好,四川省职工服务网是做什么用?  专业商城网站制作公司有哪些,pi商城官网是哪个?  免费网站制作appp,免费制作app哪个平台好?  网站优化排名时,需要考虑哪些问题呢?  如何获取免费开源的自助建站系统源码?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Python文件流缓冲机制_IO性能解析【教程】  西安专业网站制作公司有哪些,陕西省建行官方网站?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何实现API资源集合?(Resource Collection教程)  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Python并发异常传播_错误处理解析【教程】  iOS中将个别页面强制横屏其他页面竖屏  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  焦点电影公司作品,电影焦点结局是什么?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  香港服务器部署网站为何提示未备案?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何基于PHP生成高效IDC网络公司建站源码?  Laravel如何使用Eloquent进行子查询  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  利用python获取某年中每个月的第一天和最后一天  C++时间戳转换成日期时间的步骤和示例代码  javascript中的try catch异常捕获机制用法分析  如何续费美橙建站之星域名及服务?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)