當前位置:首頁 » 編程語言 » sql2571
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql2571

發布時間: 2023-03-28 19:26:58

Ⅰ thinkphp6 版本 mongodb 連表查詢 案例

# https://www.cnblogs.com/cangqinglang/p/14858131.html
public function index(){

// 方法1 您可以使用 $toObjectId聚合實現此目的,該聚合僅將字元串ID轉換為mongoose objectId
// https://blog.csdn.net/az9996/article/details/110141289
// 多表查詢 https://blog.csdn.net/eric_to/article/details/90093806

$pipeline = [
['$addFields'=>['company_id'=>['$toObjectId'=>'$company_id']]],
['$match'=>['$expr'=>['$eq'=>["\$company_id", "$\$company_Id"]]]],
];
$pipelines = [
// ['$match'=>["_id"=>new \MongoDB\BSON\ObjectId("5cb7e580a6c98abc468b458b")]],
// ['$match'=>["name"=>"xxx限公司"]],
[
'$lookup'=>[
'from'=>'oa_company_member_pay',
"let"=>["company_Id"=>"\$_id" ],
"pipeline"=>$pipeline,
'as'=>'company_pay'
],
]
];
// php 執行 產生了 2571 條數據 但是 用 db.runCommand() 執行 列印的 sql 語句 只有 101 條記錄
mp(Db::connect('mongo')->name('oa_company')->cmd([
'aggregate'=>'oa_company',
'pipeline'=>$pipelines,
'explain'=>false,
]));

mp(Db::connect('mongo')->getLastSql());

// 以下 mongodb sql 在 資料庫 查詢 通過 有 2571 條記錄
// db.getCollection("oa_company").aggregate([
// {
// "$lookup": {
// "from": "oa_company_member_pay",
// "let": { "company_Id": "$_id" },
// "pipeline": [
// { '$addFields': { "company_id": { "$toObjectId": "$company_id" }}},
// { "$match": { "$expr": { "$eq": [ "$company_id", "$$company_Id" ] } } }
// ],
// "as": "company_member_pay"
// }
// }
// ])
// 以下 mongodb sql 在 資料庫 查詢 通過 只有 101 條記錄
// db.runCommand({
// "aggregate":"oa_company",
// "pipeline":[
// {
// "$lookup":{
// "from": "oa_company_member_pay",
// "let": { "company_Id": "$_id" },
// "pipeline": [
// { '$addFields': { "company_id": { "$toObjectId": "$company_id" }}},
// { "$match": { "$expr": { "$eq": [ "$company_id", "$$company_Id" ] } } }
// ],
// "as": "company_member_pay"
// }

// }
// ],
// "explain":false
// })

// 方法2 或者使用$toString聚合 可以通過 2571

// db.getCollection('oa_company').aggregate([
// { "$addFields": { "companyidStr": { "$toString": "$_id" }}},
// { "$lookup": {
// "from": "oa_company_member_pay",
// "localField": "companyidStr",
// "foreignField": "company_id",
// "as": "pay"
// }}
// ])
/*
$pipelines = [
// ['$match'=>["_id"=>new \MongoDB\BSON\ObjectId("5cb7e580a6c98abc468b458b")]],
// ['$match'=>["name"=>"xxx有限公司"]],
['$addFields'=>['companyidStr'=>['$toString'=>'$_id']]],
[
'$lookup'=>[
'from'=>'oa_company_member_pay',
'localField'=>'companyidStr',
'foreignField'=>'company_id',
'as'=>'company_pay'
],
]
];
// php 執行 產生了 2571 條數據 但是 用 db.runCommand() 執行 列印的 sql 語句 只有 101 條記錄
mp(Db::connect('mongo')->name('oa_company')->cmd([
'aggregate'=>'oa_company',
'pipeline'=>$pipelines,
'explain'=>false,
]));

mp(Db::connect('mongo')->getLastSql());

// db.cmd({"aggregate":"oa_company","pipeline":[{"$addFields":{"companyidStr":{"$toString":"$_id"}}},{"$lookup":{"from":"oa_company_member_pay","localField":"companyidStr","foreignField":"company_id","as":"company_pay"}}],"explain":false});

// 下面 執行 不可以 只有 101 條數據
db.runCommand({"aggregate":"oa_company","pipeline":[{"$addFields":{"companyidStr":{"$toString":"$_id"}}},{"$lookup":{"from":"oa_company_member_pay","localField":"companyidStr","foreignField":"company_id","as":"company_pay"}}],"explain":false});

*/

}

Ⅱ SQL2000的資料庫附加到sql2005

找到資料庫文件,右鍵屬性,第一個標簽頁最下面只讀前面的勾去掉再用sa登錄附加試試