mongoDB是一個基於分散式檔案儲存的資料庫,由C++編寫,旨在為web應用提供可擴充套件的高效能的資料儲存解決方案。它是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫中的功能最豐富,最像關聯式資料庫的。
mongoDB連結
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
1.mongoDB PHP7以上版本用法,如果是PHP7以下可以參考 菜鳥教程https://www.runoob.com/mongodb/mongodb-php...
use m7jiMongoDB\Driver\BulkWrite;
use MongoDB\Driver\Query;
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$bulk = new MongoDB\Driver\BulkWrite();
//插入資料
$bulk->insert(['x' => 1, 'name' => 'jay', 'text' => '周杰倫']);
$bulk->insert(['x' => 2, 'name' => 'jj', 'text' => '林俊杰']);
$bulk->insert(['x' => 3, 'name' => 'tom', 'text' => '湯姆']);
$bulk->insert(['x' => 4, 'name' => 'kai', 'text' => '凱']);
$manager->executeBulkWrite('test.sites', $bulk);
//讀取資料
$filter = ['x' => ['$gt' => 0]];
$options = [* 'projection' => ['x' => 0],
'sort' => ['x' => -1]
];
$query = new MongoDB\Driver\Query($filter, $options);
$list = $manager->executeQuery('test.sites', $query);
//修改
/**
* 第一個陣列是查詢條件
* 第二個陣列是 更新內容
* 第三個陣列 multi 預設為 false,如果是為true 則更新全部符合條件的,為false 只更新第一個、upsert 預設為false,為true 不存在 則新增
*/
$bulk->update([
'x' => 5,
], [
'$set' => ['text' => 'xx']
], [
'multi'=>true,'upsert'=>true
]);
$manager->executeBulkWrite('test.sites', $bulk);
//刪除
// limit =0 刪除所有匹配資料,limit=1刪除第一條匹配資料
$bulk->delete(['text' => 'xxx'], ['limit' => 0]);
$manager->executeBulkWrite('test.sites', $bulk);
2.使用composer 依賴,更加方便
composer require mongodb/mongodb
$mongoClient = new MongoDB\Client('mongodb://127.0.0.1:27017');
$collection = $mongoClient->mongo_test->users;
//插入單條資料
$insertData = [
'id' => 2,
'name' => 'liuyuanxiu',
'age' => 100,
'hobby' => '音樂,跑步'
];
$result = $collection->insertOne($insertData);
//插入多條資料
$insertManyData = [];
for ($i = 6; $i < 60; $i++) {
$insertManyData[] = [
'id' => $i,
'name' => 'user_' . $i,
'age' => rand(10, 100), 'hobby' => '電影'
];
}
$res = $collection->insertMany($insertManyData);
echo $res->getInsertedCount();
var_dump($res->getInsertedIds());
//查詢
$row = $collection->findOne(['name' => 'karen']);
$filters = [ 'id' => ['$gt' => 30] ]; $many = $collection->find($filters)->toArray();
$curSur = $collection->find([ 'name'=>new MongoDB\BSON\Regex('^user','i') ]);
//更新
$res1 = $collection->updateOne(['id'=>1],['$set'=>['name'=>'shen_guo_wei']]); $res2 = $collection->updateMany(['id'=>['$gt'=>50]],['$set'=>['age'=>10]]);
//刪除
$collection->deleteOne(['id'=>5]); $collection->deleteMany(['id'=>['$gt'=>20]]);
3.命令列操作
show dbs 檢視所有資料庫
use dbname 切換到指定資料庫(如果不存在即建立)
db.dropDatabase() 刪除當前資料庫
show collections 檢視當前資料庫下的集合
db.集合名.drop() 刪除集合
db.createCollections(name,{選項}) 建立集合
db.集合名.insert({'name':'shen','age':20}}) 新增單條
db.集合名.insertMany([{},{}]) 新增多條
db.集合名.update(query,//查詢條件
update,//更新物件和內容
{
upsert:bool,//可選,預設false,如果true 記錄不存在則新增記錄
multi:bool,//可選 預設false,如果為true 更新所有符合條件記錄
write:document //可選 丟擲異常級別
}
)
db.集合名.remove(query,//可選 查詢條件
justOne,//可選 true 只刪除一個文件,預設 false 刪除所有符合條件
write,//可選 丟擲異常級別
) 移除集合資料
db.集合名.deleteOne(query)
db.集合名.deleteMany(query)
db.集合名.find(quey,//可選,查詢條件
projection // 使用投影操作符執行返回的鍵
) 查詢
db.集合名.find().limit().skip().sort({欄位:1 升序,-1 降序}) // limit 擷取條數,skip 起始位置
db.集合名.createIndex({欄位:1},{選項}})
db.集合.aggregate()
db.集合名.findOne()
db.集合名.getIndexes() 檢視索引
本作品採用《CC 協議》,轉載必須註明作者和本文連結