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

相关推荐
djarmy3 小时前
MAIN.c(1): warning C318: can’t open file ‘STC8G.H’ 报错 解决 分析
c语言·开发语言·mongodb
隔窗听雨眠4 小时前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
samson_www4 小时前
Oracle数据泵拷贝表空间
数据库·dba
呆萌很5 小时前
MySQL 8.4 LTS 完整安装教程
数据库·mysql
天空'之城5 小时前
单片机基础核心知识点汇总(三十三)
数据库·单片机·嵌入式硬件
爱吃苹果的日记本7 小时前
数据结构第一课
c语言·数据结构·数据库·学习·c#
张小姐的猫7 小时前
【AI大模型接入SDK】 —— Gemini接入封装
android·数据结构·数据库·c++·人工智能·python
Thomas21437 小时前
mysql 索引面试复习
数据库·mysql·面试
Elastic 中国社区官方博客7 小时前
Elasticsearch Python DSL 客户端开发
大数据·数据库·python·elasticsearch·搜索引擎·全文检索