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>"}