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

相关推荐
我最厉害。,。18 分钟前
Windows权限提升篇&数据库篇&MYSQL&MSSQL&ORACLE&自动化项目
数据库·mysql·sqlserver
远方160924 分钟前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle
GoodStudyAndDayDayUp37 分钟前
初入 python Django 框架总结
数据库·python·django
@大嘴巴子2 小时前
MySQL知识回顾总结----数据库基础
数据库·mysql
lubiii_2 小时前
SQL手工测试(MySQL数据库)
数据库·mysql·web安全·网络安全
凌辰揽月2 小时前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
想你依然心痛2 小时前
数据库入门:从原理到应用
数据库
20242817李臻3 小时前
20242817李臻-安全文件传输系统-项目验收
数据库·安全
行思理4 小时前
MongoDB慢查询临时开启方法讲解
数据库·mongodb
bbsh20994 小时前
WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
数据库·sql·mysql·webfuture