当前位置: 首页 > article >正文

thinkphp6使用MongoDB多个数据,聚合查询的坑

我使用的是thinkphp6,mongodb4.0实际业务查询

  $list = Db::connect('tstd_mongo')
            ->table("$table_time.Item")
            ->where($where)
            ->order("Cause","asc")
            ->field('_id,DBID,Data,GSID,MainKind,ManID,DISTINCT(Serial) Serial,SubKind,Time')

            ->paginate($limit);

->table("$table_time.Item")

我是根据数据,要去不同的数据库查询,需要修改源码

topthink\think-orm\src\db\connector\Mogo.php      function command()下 ,

$dbName = $dbName ?: $this->dbName; 

修改成

if (!empty($this->builder->dbName)){
    $dbName = $dbName ?: $this->builder->dbName;
    $this->dbName=$dbName;
}else{
    $dbName = $dbName ?: $this->dbName;
}

如果使用paginate  count  就要修改

topthink\think-orm\src\db\builder\Mongo.php

if (strstr($options['table'], '.')!== false) {
    $parts = explode('.',$options['table']);
    $count_db = !empty($parts[0])?$parts[0]:'';
    $count_table = !empty($parts[1])?$parts[1]:'';
    
    
    
    if (!empty($count_table)){
        $options['table']=$count_table;
    }
    if (!empty($count_db)){
        $this->dbName = $count_db;
    }
}

如果用  其他 ,aggregate,select  方法  也要加这段代码


http://www.kler.cn/a/451129.html

相关文章:

  • vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)
  • CentOS Stream 9 挂载Windows共享FTP文件夹
  • 修改el-select下拉框高度;更新:支持动态修改
  • 教培行业数字化未来:一站​式开发在线教育系统源码与网校APP详解
  • dify的ChatFlow自定义上传图片并通过HTTP请求到SpringBoot后端
  • C/C++基础知识复习(43)
  • 国内RPA产品对比
  • 【k8s】访问etcd
  • linux检测硬盘
  • 数据结构---MapSet
  • 【Java基础面试题035】什么是Java泛型的上下界限定符?
  • 批量多线程给TXT文档插入相关腾讯AI【高质量无水印无版权】原创图片
  • 本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——14Controller
  • 15.3、陷阱技术 入侵容忍 隐私保护技术
  • Apache Log4j漏洞复现
  • 对文件内的文件名生成目录,方便查阅
  • es快速扫描
  • 功能全面的跨平台笔记应用:Joplin,开源替代印象笔记与 OneNote
  • CentOS下,离线安装vscode的步骤;
  • Unity开发哪里下载安卓Android-NDK-r21d,外加Android Studio打包实验
  • 创建vue2项目或vue3项目超详细!
  • Spring Boot教程之三十一:入门 Web
  • [机器学习]XGBoost(2)——目标函数(公式详解)
  • Elasticsearch-脚本查询
  • 从测试服务器手动热部署到生产环境的实现
  • 个人笔记:ORM数据库框架EFCore使用示例,运行通过,附源码