finalclassm_mgdb {
privatestatic$ins= [];
privatestatic$def="default";
private$_conn= null;
private$_db= null;
privatestatic$_config= [
"default"=> ["url"=>"mongodb://localhost:27017","dbname"=>"mydb1"],
"mdb1"=> ["url"=>"mongodb://10.0.0.12:27017","dbname"=>"mydb2"],
];
staticfunctioni($confkey= NULL) {
if(!$confkey) {
$confkey= self::$def;
}
if(!isset(self::$ins[$confkey]) && ($conf= self::$_config[$confkey])) {
$m=newm_mgdb($conf);
self::$ins[$confkey] =$m;
}
returnself::$ins[$confkey];
}
privatefunction__construct(array$conf) {
$this->_conn =newMongoDBDriverManager($conf["url"]);
$this->_db =$conf["dbname"];
}
functioninsert($collname,array$documents,array$writeOps= []) {
$cmd= [
"insert"=>$collname,
"documents"=>$documents,
];
$cmd+=$writeOps;
return$this->command($cmd);
}
functiondel($collname,array$deletes,array$writeOps= []) {
foreach($deletesas&$_){
if(isset($_["q"]) && !$_["q"]){
$_["q"] = (Object)[];
}
if(isset($_["limit"]) && !$_["limit"]){
$_["limit"] = 0;
}
}
$cmd= [
"delete"=>$collname,
"deletes"=>$deletes,
];
$cmd+=$writeOps;
return$this->command($cmd);
}
functionupdate($collname,array$updates,array$writeOps= []) {
$cmd= [
"update"=>$collname,
"updates"=>$updates,
];
$cmd+=$writeOps;
return$this->command($cmd);
}
functionquery($collname,array$filter,array$writeOps= []){
$cmd= [
"find"=>$collname,
"filter"=>$filter
];
$cmd+=$writeOps;
return$this->command($cmd);
}
functioncommand(array$param) {
$cmd=newMongoDBDriverCommand($param);
return$this->_conn->executeCommand($this->_db,$cmd);
}
functiongetMongoManager() {
return$this->_conn;
}
}
作者:dreamer_lk
链接:https://www.jianshu.com/p/3a1d9b7fc0eb



