{"id":391,"title":"php7 mongodb\u64cd\u4f5c\u7c7b","good":0,"bad":0,"hit":3036,"created_at":"2018-08-09 18:54:05","content":"

\u5f88\u597d\u7528\u7684php7\u64cd\u4f5cmongodb\u7c7b<\/p>

https:\/\/blog.csdn.net\/color_wind\/article\/details\/52008674<\/a> <\/p>

<\/p>

<?php\nnamespace ZXUN\\Data\\DataBase;\n\nfinal class MongoDB\n{\n    private static $ins = [];\n    \n    private static $def = "default";\n    \n    private $_conn = null;\n    \n    private static $_config = [\n        "default" => ["url" => "mongodb:\/\/127.0.0.1:27017", "dbName" => "windows_hr"],\n        "db1" => ["url" => "mongodb:\/\/username:password@localhost:27017", "dbName" => "myDb1"],\n    ];\n    \n    private $_db = null;\n\n\n    \/**\n     * \u521b\u5efa\u5b9e\u4f8b\n     * @param  string $confKey\n     * @return \\MongoDB\n     *\/\n    static function getInstance($confKey = NULL)\n    {\n        if (!$confKey) {\n            $confKey = self::$def;\n        }\n        if (!isset(self::$ins[$confKey]) && ($conf = self::$_config[$confKey])) {\n            $m = new MongoDB($conf);\n            self::$ins[$confKey] = $m;\n        }\n        return self::$ins[$confKey];\n    }\n\n\n    \/**\n     * \u6784\u9020\u65b9\u6cd5-\u5355\u4f8b\u6a21\u5f0f\n     * MongoDB constructor.\n     * @param array $conf\n     *\/\n    private function __construct(array $conf)\n    {\n        $this->_conn = new \\MongoDB\\Driver\\Manager($conf["url"] . "\/{$conf["dbName"]}");\n        $this->_db = $conf["dbName"];\n    }\n\n\n    \/**\n     * \u63d2\u5165\u6570\u636e\n     * @param  string $collName\n     * @param  array $documents [["name"=>"values", ...], ...]\n     * @param  array $writeOps ["ordered"=>boolean,"writeConcern"=>array]\n     * @return \\MongoDB\\Driver\\Cursor\n     *\/\n    function insert($collName, array $documents, array $writeOps = [])\n    {\n        $cmd = [\n            "insert" => $collName,\n            "documents" => $documents,\n        ];\n        $cmd += $writeOps;\n        return $this->command($cmd);\n    }\n\n\n    \/**\n     * \u5220\u9664\u6570\u636e\n     * @param  string $collName\n     * @param  array $deletes [["q"=>query,"limit"=>int], ...]\n     * @param  array $writeOps ["ordered"=>boolean,"writeConcern"=>array]\n     * @return \\MongoDB\\Driver\\Cursor\n     *\/\n    function del($collName, array $deletes, array $writeOps = [])\n    {\n        foreach ($deletes as &$_) {\n            if (isset($_["q"]) && !$_["q"]) {\n                $_["q"] = (Object)[];\n            }\n            if (isset($_["limit"]) && !$_["limit"]) {\n                $_["limit"] = 0;\n            }\n        }\n        $cmd = [\n            "delete" => $collName,\n            "deletes" => $deletes,\n        ];\n        $cmd += $writeOps;\n        return $this->command($cmd);\n    }\n\n\n    \/**\n     * \u66f4\u65b0\u6570\u636e\n     * @param  string $collName\n     * @param  array $updates [["q"=>query,"u"=>update,"upSet"=>boolean,"multi"=>boolean], ...]\n     * @param  array $writeOps ["ordered"=>boolean,"writeConcern"=>array]\n     * @return \\MongoDB\\Driver\\Cursor\n     *\/\n    function update($collName, array $updates, array $writeOps = [])\n    {\n        $cmd = [\n            "update" => $collName,\n            "updates" => $updates,\n        ];\n        $cmd += $writeOps;\n        return $this->command($cmd);\n    }\n\n    \/**\n     * \u67e5\u8be2\n     * @param  string $collName\n     * @param  array $filter [query]\n     * @param  array $writeOps\n     * @return \\MongoDB\\Driver\\Cursor\n     *\/\n    function query($collName, array $filter, array $writeOps = [])\n    {\n        $cmd = [\n            "find" => $collName,\n            "filter" => $filter\n        ];\n        $cmd += $writeOps;\n        return $this->command($cmd);\n    }\n\n    \/**\n     * \u6267\u884cMongoDB\u547d\u4ee4\n     * @param array $param\n     * @return \\MongoDB\\Driver\\Cursor\n     *\/\n    function command(array $param)\n    {\n        $cmd = new \\MongoDB\\Driver\\Command($param);\n        return $this->_conn->executeCommand($this->_db, $cmd);\n    }\n\n    \/**\n     * \u83b7\u53d6\u5f53\u524dmongoDB Manager\n     * @return \\MongoDB\\Driver\\Manager\n     *\/\n    function getMongoManager()\n    {\n        return $this->_conn;\n    }\n\n}<\/pre>

<\/p>

\u4f7f\u7528\u65b9\u6cd5<\/p>

<?php\nrequire_once 'm_mgdb.php';\n\/\/ \u793a\u4f8b\u4ee3\u7801\n\/\/$db = m_mgdb::i("mdb1"); \/\/ \u4f7f\u7528\u914d\u7f6eself::$_config["mdb1"]\n$db = m_mgdb::i();         \/\/ \u4f7f\u7528\u914d\u7f6eself::$_config[self::$def]\n$collname = "proinfo";\n\/\/ echo "\\n---------- \u67e5\u8be2\u652f\u6301\u547d\u4ee4 -----------\\n";\n\/\/ $cmd = [\n\/\/     "listCommands" => 1,\n\/\/ ];\n\/\/ $rs = $db->command($cmd);\n\/\/ print_r($rs->toArray());\necho "\\n---------- \u5220\u9664 proinfo \u6240\u6709\u6570\u636e -----------\\n";\n$delets = [\n["q" => [],"limit" => 0]\n];\n$rs = $db->del($collname, $delets);\nprint_r($rs->toArray());\necho "\\n---------- \u521b\u5efa\u7d22\u5f15 -----------\\n";\n$cmd = [\n"createIndexes" => $collname,\n"indexes"       => [\n["name" => "proname_idx", "key" => ["name"=>1],"unique" => true],\n],\n];\n$rs = $db->command($cmd);\nprint_r($rs->toArray());\necho "\\n---------- \u67e5\u8be2\u7d22\u5f15 -----------\\n";\n$cmd = [\n"listIndexes" => $collname,\n];\n$rs = $db->command($cmd);\nprint_r($rs->toArray());\necho "\\n------------ \u63d2\u5165\u6570\u636e ---------\\n";\n$rows = [\n["name" => "ns w1","type"=>"ns","size"=>["height"=>150,"width"=>30],"price"=>3000],\n["name" => "ns hd","type"=>"ns","size"=>["height"=>154,"width"=>30],"price"=>3500],\n["name" => "ns w3","type"=>"ns","size"=>["height"=>160,"width"=>30],"price"=>3800],\n["name" => "bt s1","type"=>"bt","size"=>["height"=>158,"width"=>32],"price"=>3500],\n["name" => "bt w1","type"=>"bt","size"=>["height"=>157,"width"=>30],"price"=>3600],\n["name" => "an w1","type"=>"bt","size"=>["height"=>157,"width"=>30],"price"=>3700],\n["name" => "wn w6","type"=>"wn","size"=>["height"=>157,"width"=>30],"price"=>3500],\n];\n$rs = $db->insert($collname, $rows);\nprint_r($rs->toArray());\necho "\\n---------- \u67e5\u8be2\u6570\u636e -----------\\n";\n$filter = [\n"name" => ['$regex' => '\\sw\\d'], \/\/ mongo \u6b63\u5219\u5339\u914d\n'$or'  => [["type"  => "bt"], ["size.height" => ['$gte' => 160]]]\n];\n$queryWriteOps = [\n"projection" => ["_id"   => 0],\n"sort"       => ["price" => -1],\n"limit"      => 20\n];\n$rs = $db->query($collname, $filter, $queryWriteOps);\nprint_r($rs->toArray());\necho "\\n---------- \u66f4\u65b0\u6570\u636e -----------\\n";\n$updates = [\n[\n"q"     => ["name" => "ns w3"],\n"u"     => ['$set' => ["size.height" => 140],'$inc' => ["size.width" => 14]],\n"multi" => true,\n]\n];\n$rs = $db->update($collname, $updates);\nprint_r($rs->toArray());\necho "\\n---------- \u67e5\u8be2\u6570\u636e -----------\\n";\n$filter = [\n"name" => "ns w3",\n];\n$rs = $db->query($collname, $filter, $queryWriteOps);\nprint_r($rs->toArray());<\/pre>

<\/p>"}