原生PHP7操作mongodb4

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章