Mongodb安裝篇(CentOS7,Mongodb4.0.1):
https://blog.csdn.net/gaokcl/article/details/83587077
Mongodb 配置用戶:
https://blog.csdn.net/gaokcl/article/details/101696511
mongodb版本 :mongodb4.0.1
PHP版本 :php7.2.14
<?php
/**
* 原生PHP操作mongodb
* mongodb4.0.1 + php7.2.14
*/
class NativeMongoDB
{
protected $mongo = null;
public function __construct()
{
if (!isset($this->mongo) || empty($this->mongo)) {
// $this->mongo = new MongoDB\Driver\Manager(getenv('MONGODB_LINK'));
// 配置用戶名密碼的
$this->mongo = new MongoDB\Driver\Manager('mongodb://username:password@ip:27017');
// 未設置用戶名與密碼(不建議使用)
$this->mongo = new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017');
}
}
//----------------------------------------------------------------
// @ 插入操作,不用事前創建集合
//----------------------------------------------------------------
public function insert_mongo($data = [])
{
// 實例化一個添加類
$bulk = new MongoDB\Driver\BulkWrite;
// 添加你要添加的數據 可以是對象也可以是數組
if (!isset($data) || empty($data)) { // todo 測試實例
$bulk->insert(
[
'user_id' => 1,
'name' => '小明',
'age' => '23',
'pass' => '123456',
'email' => '[email protected]',
'create_time' => time(),
'status' => '9'
]
);
}
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000); // 可選,修改確認
// 第一個參數的格式 [ 數據庫.集合名 ]
$result = $this->mongo->executeBulkWrite('test.test', $bulk, $writeConcern);
return (bool)$result;
}
//----------------------------------------------------------------
// @ 查詢--mongodb的數據查詢
//----------------------------------------------------------------
/**
* 查詢--mongodb的數據查詢
* @param array $data
* @param int $skip
* @param int $limit
* @param array $sort
*/
public function select_mongo($data = [], $skip = 0, $limit = 10, $sort = ['age' => 1])
{
if (empty($data) || !isset($data)) {
// 1,查詢條件
$data = [
'email' => '[email protected]',
// $gt`這是查詢選擇器,表示大於
'age' => ['$gt' => '18']
];
// 2,選項意義爲:`skip`跳過0條數據,`limit`查詢10條數據,`sort`按age字段正序排序(1爲正序,-1爲倒序)
$aSort = [
['skip' => $skip, 'limit' => $limit, 'sort' => $sort]
];
}
// todo 查詢
$query = new MongoDB\Driver\Query($data, $aSort);
$cursor = $this->mongo->executeQuery('test.test', $query);
$result = [];
if ($cursor) {
foreach ($cursor as $doc) {
$result[] = $doc;
}
$result = $this->object_array($result);
}
return $result;
}
//----------------------------------------------------------------
// @ 修改--mongodb的數據修改
//----------------------------------------------------------------
public function update_mongo($data = [])
{
if (!isset($data) || empty($data)) {
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
['name' => '小緩'],
[
// 注意 (int)18 與 (string)'18'
'$set' => ['age' => '18', 'status' => '9']
]);
}
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$res = $this->mongo->executeBulkWrite('test.test', $bulk, $writeConcern);
return (bool)$res;
}
//----------------------------------------------------------------
// @ 刪除--mongodb的數據刪除
//----------------------------------------------------------------
public function delete_mongo($data = [])
{
if (empty($data) || !isset($data)) {
$data = ['name' => '小名', 'age' => "12"];
}
$bulk = new MongoDB\Driver\BulkWrite;
// 刪除條件
$bulk->delete($data);
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$res = $this->mongo->executeBulkWrite('test.test', $bulk, $writeConcern);
return (bool)$res;
}
/**************************** 工具 ****************************/
// PHP 對象 轉爲 數組
public function object_array($array)
{
if (is_object($array)) {
$array = (array)$array;
}
if (is_array($array)) {
foreach ($array as $key => $value) {
$array[$key] = $this->object_array($value);
}
}
return $array;
}
}
$model = new NativeMongoDB();
$c = $model->insert_mongo();
//$c = $model->select_mongo();
//$c = $model->update_mongo();
//$c = $model->delete_mongo();
var_dump($c);
exit;