1. php操作MongoDB GridFS 下載txt文件
<?php
//初始化gridfs
$conn = new Mongo(); //連接MongoDB
$db = $conn->photos; //選擇資料庫
$grid = $db->getGridFS(); //取得gridfs對象
//gridfs有三種方式存儲文件
//第一種直接存儲文件
$id = $grid->storeFile("./logo.png");
//第二種存儲文件二進制流
$data = get_file_contents("./logo.png");
$id = $grid->storeBytes($data,array("parame"=>』附加參數將隨圖片一起存入』));
//第三種保存直接表單提交的文件$_FILES
$id = $grid->storeUpload('upfile');
//相當於
$id = $grid->storeFile($_FILES[『upfile』][『tmp_name』]);
//--------------以上是保存圖片--下面開始讀取圖片----------------
//保存成功後返回$id = md5字元串
$logo = $grid->findOne(array('_id'=>$id)); //以_id為索引取得文件
header('Content-type: image/png'); //輸出圖片頭
echo $logo ->getBytes(); //輸出數據流
?>
2. php鏈接mongodb
說一下我看到的代碼,你display()裡面可以寫上自己要展現的模板地址。
報錯報的是沒有寫許可權。說明你沒有給這個文件寫許可權,所以無法創建緩存目錄和寫入緩存文件。你上傳到了伺服器上,直接用伺服器Ip打開。
3. PHP連接mongodb資料庫,登陸後想顯示登錄人的用戶名,為什麼現在顯示1
方法如下:
創建資料庫
use tt
這樣就創建了一個資料庫,如果什麼都不操作離開的話,這個庫就會被系統刪除.所以還要執行下面的命令:
db.usr.insert({'name':'tompig'});
db.usr.insert({'name':'tompig1','id':1});
隨便整了2個表,這個無所謂的,反正要導入表的話就刪除掉這2個就可以了,目前只是想讓資料庫保持住.
然後使用命令查看是否有保存tt這個資料庫:
show dbs
3.配置用戶
use tt
db.addUser('mongodb','123456');
mongodb是用戶名,123456是密碼.
好了,這樣一個資料庫和對這個資料庫配置用戶就完成了.
mongodb常用命令:
1、Help查看命令提示
help
db.help();
db.yourColl.help();
db.youColl.find().help();
rs.help();
2、切換/創建資料庫
use yourDB; 當創建一個集合(table)的時候會自動創建當前資料庫
3、查詢所有資料庫
show dbs;
4、刪除當前使用資料庫
db.dropDatabase();
5、從指定主機上克隆資料庫
db.cloneDatabase(「127.0.0.1」); 將指定機器上的資料庫的數據克隆到當前資料庫
6、從指定的機器上復制指定資料庫數據到某個資料庫
db.Database("mydb", "temp", "127.0.0.1");將本機的mydb的數據復制到temp資料庫中
7、修復當前資料庫
db.repairDatabase();
8、查看當前使用的資料庫
db.getName();
db; db和getName方法是一樣的效果,都可以查詢當前使用的資料庫
9、顯示當前db狀態
db.stats();
10、當前db版本
db.version();
11、查看當前db的鏈接機器地址
db.getMongo();
Collection聚集集合
1、創建一個聚集集合(table)
db.createCollection(「collName」, {size: 20, capped: 5, max: 100});
2、得到指定名稱的聚集集合(table)
db.getCollection("account");
3、得到當前db的所有聚集集合
db.getCollectionNames();
4、顯示當前db所有聚集索引的狀態
db.printCollectionStats();
用戶相關
1、添加一個用戶
db.addUser("name");
db.addUser("userName", "pwd123", true); 添加用戶、設置密碼、是否只讀
2、資料庫認證、安全模式
db.auth("userName", "123123");
3、顯示當前所有用戶
show users;
4、刪除用戶
db.removeUser("userName");
其他
1、查詢之前的錯誤信息
db.getPrevError();
2、清除錯誤記錄
db.resetError();
4. 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});
*/
}
5. PHP支持Mongodb副本集聯接嗎
因為只有對一個庫的許可權,所以指定了dbname
連接如下:
$con = new Mongo("mongodb://user:[email protected]:27010,192.168.0.2:27010,192.168.0.3:27010/dbname");
現在報錯了。
不知道PHP支持副本集連接嗎?
常規來說,如果第一個ip連接上的話,那後面兩個會忽略,如果第一個ip連不上的話,會自動連第二個或第三個。可是現在為什麼有時候會報錯?
------解決方案--------------------
$this->connection->setSlaveOkay(true);
如果是集群還得設置下主從。
6. MongoDB在ThinkPHP裡面怎麼進行資料庫操作
連接資料庫
$conn=new Mongo(「mongodb://sa:123@localhost」); #帶用戶名密碼
選擇資料庫和集合
$db=$conn->selectDB(「mydb」);
$collection = $db->selectCollection(『column』);
增刪改查這是我的建議,如果想要更加詳細的話,可以去後盾人學習相關的知識
7. MongoDB在ThinkPHP裡面怎麼進行資料庫操作
連接資料庫
$conn=new Mongo(「mongodb://sa:123@localhost」); #帶用戶名密碼
選擇指談資料庫和集合
$db=$conn->selectDB(「mydb」);
$collection = $db->selectCollection(『column』);
增刪改查
1.插入
$array=array(『column_name』=>悔逗搜』col』.rand(100,999),』column_exp』=>』xiaocai』);
$result=$collection->insert($array); #簡單插入
2. 修改更新
$where=array(『column_name』=>』col123′);
$newdata=array(『column_exp』=>碧歷』GGGGGGG』,'column_fid』=>444);
$result=$collection->update($where,array(『$set』=>$newdata));
3.刪除
$where=array(『column_name』=>』col685′);
$result=$collection->update($where,array(『$unset』=>』column_exp』));
4.查詢
$result =$collection->find();