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 方法 也要加这段代码

相关推荐
Decay__42 分钟前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁2 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk3 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW3 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB3 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_3 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室4 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库
龙腾AI白云5 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱
KaiwuDB5 小时前
KaiwuDB 运维实战06:数据库备份与恢复:从理论到实战
运维·数据库·时序数据库·kaiwudb
数字新视界5 小时前
空调控制器AIRC800的智能化管理与应用实践
大数据·服务器·数据库·动环监控系统·动力与环境监控系统