日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

MongoDB PHP数据库查询类

發(fā)布時間:2025/3/19 php 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB PHP数据库查询类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java代碼??
  • <?php????
  • /***?Mongodb類**?examples:????
  • *?$mongo?=?new?HMongodb("127.0.0.1:11223");??
  • *?$mongo->selectDb("test_db");??
  • *?創(chuàng)建索引??
  • *?$mongo->ensureIndex("test_table",?array("id"=>1),?array('unique'=>true));??
  • *?獲取表的記錄??
  • *?$mongo->count("test_table");??
  • *?插入記錄??
  • *?$mongo->insert("test_table",?array("id"=>2,?"title"=>"asdqw"));??
  • *?更新記錄??
  • *?$mongo->update("test_table",?array("id"=>1),array("id"=>1,"title"=>"bbb"));??
  • *?更新記錄-存在時更新,不存在時添加-相當于set??
  • *?$mongo->update("test_table",?array("id"=>1),array("id"=>1,"title"=>"bbb"),array("upsert"=>1));??
  • *?查找記錄??
  • *?$mongo->find("c",?array("title"=>"asdqw"),?array("start"=>2,"limit"=>2,"sort"=>array("id"=>1)))??
  • *?查找一條記錄??
  • *?$mongo->findOne("$mongo->findOne("ttt",?array("id"=>1))",?array("id"=>1));??
  • *?刪除記錄??
  • *?$mongo->remove("ttt",?array("title"=>"bbb"));??
  • *?僅刪除一條記錄??
  • *?$mongo->remove("ttt",?array("title"=>"bbb"),?array("justOne"=>1));??
  • *?獲取Mongo操作的錯誤信息??
  • *?$mongo->getError();??
  • */????
  • ????
  • class?HMongodb?{????
  • ????
  • ????//Mongodb連接????
  • ????var?$mongo;????
  • ????
  • ????var?$curr_db_name;????
  • ????var?$curr_table_name;????
  • ????var?$error;????
  • ????
  • ????/**??
  • ????*?構造函數(shù)??
  • ????*?支持傳入多個mongo_server(1.一個出問題時連接其它的server?2.自動將查詢均勻分發(fā)到不同server)??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$mongo_server:數(shù)組或字符串-array("127.0.0.1:1111",?"127.0.0.1:2222")-"127.0.0.1:1111"??
  • ????*?$connect:初始化mongo對象時是否連接,默認連接??
  • ????*?$auto_balance:是否自動做負載均衡,默認是??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:mongo?object??
  • ????*?失敗:false??
  • ????*/????
  • ????function?__construct($mongo_server,?$connect=true,?$auto_balance=true)????
  • ????{????
  • ????????if?(is_array($mongo_server))????
  • ????????{????
  • ????????????$mongo_server_num?=?count($mongo_server);????
  • ????????????if?($mongo_server_num?>?1?&&?$auto_balance)????
  • ????????????{????
  • ????????????????$prior_server_num?=?rand(1,?$mongo_server_num);????
  • ????????????????$rand_keys?=?array_rand($mongo_server,$mongo_server_num);????
  • ????????????????$mongo_server_str?=?$mongo_server[$prior_server_num-1];????
  • ????????????????foreach?($rand_keys?as?$key)????
  • ????????????????{????
  • ????????????????????if?($key?!=?$prior_server_num?-?1)????
  • ????????????????????{????
  • ????????????????????????$mongo_server_str?.=?','?.?$mongo_server[$key];????
  • ????????????????????}????
  • ????????????????}????
  • ????????????}????
  • ????????????else????
  • ????????????{????
  • ????????????????$mongo_server_str?=?implode(',',?$mongo_server);????
  • ????????????}??????????????????}????
  • ????????else????
  • ????????{????
  • ????????????$mongo_server_str?=?$mongo_server;????
  • ????????}????
  • ????????try?{????
  • ????????????$this->mongo?=?new?Mongo($mongo_server,?array('connect'=>$connect));????
  • ????????}????
  • ????????catch?(MongoConnectionException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}????
  • ????}????
  • ????
  • ????function?getInstance($mongo_server,?$flag=array())????
  • ????{????
  • ????????static?$mongodb_arr;????
  • ????????if?(emptyempty($flag['tag']))????
  • ????????{????
  • ????????????$flag['tag']?=?'default';??????????}????
  • ????????if?(isset($flag['force'])?&&?$flag['force']?==?true)????
  • ????????{????
  • ????????????$mongo?=?new?HMongodb($mongo_server);????
  • ????????????if?(emptyempty($mongodb_arr[$flag['tag']]))????
  • ????????????{????
  • ????????????????$mongodb_arr[$flag['tag']]?=?$mongo;????
  • ????????????}????
  • ????????????return?$mongo;????
  • ????????}????
  • ????????else?if?(isset($mongodb_arr[$flag['tag']])?&&?is_resource($mongodb_arr[$flag['tag']]))????
  • ????????{????
  • ????????????return?$mongodb_arr[$flag['tag']];????
  • ????????}????
  • ????????else????
  • ????????{????
  • ????????????$mongo?=?new?HMongodb($mongo_server);????
  • ????????????$mongodb_arr[$flag['tag']]?=?$mongo;????
  • ????????????return?$mongo;??????????????????}??????????}????
  • ????
  • ????/**??
  • ????*?連接mongodb?server??
  • ????*??
  • ????*?參數(shù):無??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:true??
  • ????*?失敗:false??
  • ????*/????
  • ????function?connect()????
  • ????{????
  • ????????try?{????
  • ????????????$this->mongo->connect();????
  • ????????????return?true;????
  • ????????}????
  • ????????catch?(MongoConnectionException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}????
  • ????}????
  • ????
  • ????/**??
  • ????*?select?db??
  • ????*??
  • ????*?參數(shù):$dbname??
  • ????*??
  • ????*?返回值:無??
  • ????*/????
  • ????function?selectDb($dbname)????
  • ????{????
  • ????????$this->curr_db_name?=?$dbname;????
  • ????}????
  • ????
  • ????/**??
  • ????*?創(chuàng)建索引:如索引已存在,則返回。??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*?$index:索引-array("id"=>1)-在id字段建立升序索引??
  • ????*?$index_param:其它條件-是否唯一索引等??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:true??
  • ????*?失敗:false??
  • ????*/????
  • ????function?ensureIndex($table_name,?$index,?$index_param=array())????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????$index_param['safe']?=?1;????
  • ????????try?{????
  • ????????????$this->mongo->$dbname->$table_name->ensureIndex($index,?$index_param);????
  • ????????????return?true;????
  • ????????}????
  • ????????catch?(MongoCursorException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}????
  • ????}????
  • ????
  • ????/**??
  • ????*?插入記錄??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*?$record:記錄??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:true??
  • ????*?失敗:false??
  • ????*/????
  • ????function?insert($table_name,?$record)????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????try?{????
  • ????????????$this->mongo->$dbname->$table_name->insert($record,?array('safe'=>true));????
  • ????????????return?true;????
  • ????????}????
  • ????????catch?(MongoCursorException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}????
  • ????}????
  • ????
  • ????/**??
  • ????*?查詢表的記錄數(shù)??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*??
  • ????*?返回值:表的記錄數(shù)??
  • ????*/????
  • ????function?count($table_name)????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????return?$this->mongo->$dbname->$table_name->count();????
  • ????}????
  • ????
  • ????/**??
  • ????*?更新記錄??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*?$condition:更新條件??
  • ????*?$newdata:新的數(shù)據(jù)記錄??
  • ????*?$options:更新選擇-upsert/multiple??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:true??
  • ????*?失敗:false??
  • ????*/????
  • ????function?update($table_name,?$condition,?$newdata,?$options=array())????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????$options['safe']?=?1;????
  • ????????if?(!isset($options['multiple']))????
  • ????????{????
  • ????????????$options['multiple']?=?0;??????????}????
  • ????????try?{????
  • ????????????$this->mongo->$dbname->$table_name->update($condition,?$newdata,?$options);????
  • ????????????return?true;????
  • ????????}????
  • ????????catch?(MongoCursorException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}??????????}????
  • ????
  • ????/**??
  • ????*?刪除記錄??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*?$condition:刪除條件??
  • ????*?$options:刪除選擇-justOne??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:true??
  • ????*?失敗:false??
  • ????*/????
  • ????function?remove($table_name,?$condition,?$options=array())????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????$options['safe']?=?1;????
  • ????????try?{????
  • ????????????$this->mongo->$dbname->$table_name->remove($condition,?$options);????
  • ????????????return?true;????
  • ????????}????
  • ????????catch?(MongoCursorException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}??????????}????
  • ????
  • ????/**??
  • ????*?查找記錄??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*?$query_condition:字段查找條件??
  • ????*?$result_condition:查詢結果限制條件-limit/sort等??
  • ????*?$fields:獲取字段??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:記錄集??
  • ????*?失敗:false??
  • ????*/????
  • ????function?find($table_name,?$query_condition,?$result_condition=array(),?$fields=array())????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????$cursor?=?$this->mongo->$dbname->$table_name->find($query_condition,?$fields);????
  • ????????if?(!emptyempty($result_condition['start']))????
  • ????????{????
  • ????????????$cursor->skip($result_condition['start']);????
  • ????????}????
  • ????????if?(!emptyempty($result_condition['limit']))????
  • ????????{????
  • ????????????$cursor->limit($result_condition['limit']);????
  • ????????}????
  • ????????if?(!emptyempty($result_condition['sort']))????
  • ????????{????
  • ????????????$cursor->sort($result_condition['sort']);????
  • ????????}????
  • ????????$result?=?array();????
  • ????????try?{????
  • ????????????while?($cursor->hasNext())????
  • ????????????{????
  • ????????????????$result[]?=?$cursor->getNext();????
  • ????????????}????
  • ????????}????
  • ????????catch?(MongoConnectionException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}????
  • ????????catch?(MongoCursorTimeoutException?$e)????
  • ????????{????
  • ????????????$this->error?=?$e->getMessage();????
  • ????????????return?false;????
  • ????????}????
  • ????????return?$result;????
  • ????}????
  • ????
  • ????/**??
  • ????*?查找一條記錄??
  • ????*??
  • ????*?參數(shù):??
  • ????*?$table_name:表名??
  • ????*?$condition:查找條件??
  • ????*?$fields:獲取字段??
  • ????*??
  • ????*?返回值:??
  • ????*?成功:一條記錄??
  • ????*?失敗:false??
  • ????*/????
  • ????function?findOne($table_name,?$condition,?$fields=array())????
  • ????{????
  • ????????$dbname?=?$this->curr_db_name;????
  • ????????return?$this->mongo->$dbname->$table_name->findOne($condition,?$fields);????
  • ????}????
  • ????
  • ????/**??
  • ????*?獲取當前錯誤信息??
  • ????*??
  • ????*?參數(shù):無??
  • ????*??
  • ????*?返回值:當前錯誤信息??
  • ????*/????
  • ????function?getError()????
  • ????{????
  • ????????return?$this->error;????
  • ????}????
  • }????
  • ????
  • ?>??
  • 數(shù)據(jù)庫連接

    Java代碼??
  • //⑴默認格式??
  • $m?=?new?Mongo();??
  • //這里采用默認連接本機的27017端口,當然你也可以連接遠程主機如192.168.0.4:27017,如果端口是27017,端口可以省略??
  • //⑵標準連接??
  • $m?=?new?Mongo("mongodb://${username}:${password}@localhost");???
  • 選擇想要的collection:

    Java代碼??
  • $mo?=?new?Mongo();??
  • $coll?=?$mo->selectCollection('db',?'mycoll');//得到一個collection對象??
  • 插入數(shù)據(jù)(MongoCollection對象)

    Java代碼??
  • $coll?=?$mo->db->foo;??
  • $a?=?array('a'?=>?'b');??
  • $options?=?array('safe'?=>?true);??
  • $rs?=?$coll->insert($a,?$options);??
  • 更新數(shù)據(jù)庫中的記錄(MongoCollection對象)

    Java代碼??
  • $coll?=?$mo->db->coll;??
  • $c?=?array('a'?=>?1,?'s'?=>?array('$lt'?=>?100));??
  • $newobj?=?array('e'?=>?'f',?'x'?=>?'y');??
  • $options?=?array('safe'?=>?true,?'multiple'?=>?true);??
  • $rs?=?$coll->update($c,?$newobj,?$options);??
  • 刪除數(shù)據(jù)庫中的記錄(MongoCollection對象)

    Java代碼??
  • $coll?=?$mo->db->coll;??
  • $c?=?array('a'?=>?1,?'s'?=>?array('$lt'?=>?100));??
  • $options?=?array('safe'?=>?true);??
  • $rs?=?$coll->remove($c,?$options);??
  • 查詢collection獲得多條記錄(MongoCollection類)

    Java代碼??
  • $coll?=?$mo->db->coll;??
  • $query?=?array('s'?=>?array('$lt'?=>?100));??
  • $fields?=?array('a'?=>?true,?'b'?=>?true);??
  • $rs?=?$coll->find($query,?$fields);??
  • ?查詢collection獲得單條記錄(MongoCollection類)

    Java代碼??
  • $coll?=?$mo->db->coll;??
  • $query?=?array('s'?=>?array('$lt'?=>?100));??
  • $fields?=?array('a'?=>?true,?'b'?=>?true);??
  • $rs?=?$coll->findOne($query,?$fields);??
  • 針對游標對象MongoCursor的操作(MongoCursor類):

    Java代碼??
  • $cursor?=?$coll->find($query,$fields);??
  • while($cursor->hasNext()){??
  • $r?=?$cursor->getNext();??
  • ????var_dump($r);??
  • }??
  • //或者??
  • $cursor?=?$coll->find($query,$fields);??
  • foreache($cursor?as?$k=>$v){??
  • ????var_dump($v);??
  • }??
  • //或者??
  • $cursor?=?$coll->find($query,$fields);??
  • $array=?iterator_to_array($cursor);??
  • 刪除一個數(shù)據(jù)庫

    Java代碼??
  • $m?->?dropDB("comedy");??
  • 刪除當前DB

    Java代碼??
  • $db?=?$mo->dbname;??
  • $db->drop();??
  • 列出所有可用數(shù)據(jù)庫

    Java代碼??
  • $m->listDBs();???//無返回值??
  • 獲得當前數(shù)據(jù)庫名

    Java代碼??
  • $db?=?$mo->dbname;??
  • $db->_tostring(); ?
  • 總結

    以上是生活随笔為你收集整理的MongoDB PHP数据库查询类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。