资讯专栏INFORMATION COLUMN

thinkphp 下的mongo的操作

wangxinarhat / 502人阅读

摘要:多个条件语句网上很多只是一个大于或者一个小于,没有个合并的如大于并且小于的的字段统计的初始值表名中过滤条件必须要带这里讲一下的扩展是有问题的,在里调用会无效,具体解决方案是要在文件把改为如下当然也要改的把改为如果你要用模型

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"去查是查不到的!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21664.html

相关文章

  • thinkphp mongo操作

    摘要:多个条件语句网上很多只是一个大于或者一个小于,没有个合并的如大于并且小于的的字段统计的初始值表名中过滤条件必须要带这里讲一下的扩展是有问题的,在里调用会无效,具体解决方案是要在文件把改为如下当然也要改的把改为如果你要用模型 1.多个条件语句,网上很多只是一个大于或者一个小于,没有2个合并的,如大于2并且小于4的 $where[_string] = this.b > 2 & this.b...

    jeyhan 评论0 收藏0
  • API后端框架Godtail1-Composer

    摘要:表示在开发环境需要的包,例如。指定范围,用来代表,代表。指定分支和提交编号。在版本库,有时为了保证版本的绝对统一,可以把提交到版本库,确保安装的都是同一个版本。命令使用命令名称可以查看具体命令的帮助,包括支持参数和作用。 来自博客:神的尾巴,原文链接 Composer中文文档 安装Composer #下载什么的,我比较喜欢wget,官方是用的curl wget https://getc...

    chenjiang3 评论0 收藏0
  • TP5学习记录(Controller篇)

    摘要:可以在入口文件中定义,然后新建文件夹,达到将应用配置放到该文件的目的,这样方便将配置进行统一管理。动态配置返回数据类型功能同上张三男请求成功 ThinkPHP5 ThinkPHP是一个免费开源的、快速简单的、面向对象的、轻量级PHP开发框架。 为什么选择ThinkPHP5? ThinkPHP5采用了全新的架构思想; 优化了核心是一个颠覆性的版本; 支持composer方式安装; 对...

    leone 评论0 收藏0
  • 国产PHP框架——ThinkPHP各功能开发系列一 环境搭建

    摘要:在程序开发前,首先要做好本地环境的搭建,以及准备好所需程序及各种原料。本系列使用的是版本。国产框架各功能开发系列三,将开始在本地环境中配制,完成数据库搭建前后台搭建等功能。 自此开始我们将逐一介绍如何利用国产优秀php框架ThinkPHP开发登录、上传、无限极分类、图文发布等各功能模块,如果喜欢请关注头条号生命一路前行。 在程序开发前,首先要做好本地环境的搭建,以及准备好所需程序及各种...

    tigerZH 评论0 收藏0
  • 项目切换PHP7.1.15

    摘要:也可以接入项目打包测试流程做代码检测。扩展替换以后废弃了和扩展,项目中使用的使用的类使用的是已经废弃的扩展使用扩展做兼容替换。测试方案和大部分公司差不多,项目组划分了线下开发环境预发布环境和生产环境三个环境。 项目由PHP5.5切换至PHP7.1.15 背景 从2015年鸟哥的技术分享,我们知道PHP7是对底层实现得一次完全重构,函数调用机制和内存管理等很多方便做了优化,使PHP性能有...

    tuniutech 评论0 收藏0

发表评论

0条评论

wangxinarhat

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<