ホームページ  >  記事  >  バックエンド開発  >  Mongo Tableクラスファイル取得MongoCursor(カーソル)実装メソッド解析_PHPチュートリアル

Mongo Tableクラスファイル取得MongoCursor(カーソル)実装メソッド解析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:01:57979ブラウズ

MongoCursorオブジェクト
Cursorクラス

Mongo
Config.php設定ファイル
Table.php(mongodb操作データベースクラスファイル)

Config.php設定ファイル

コードをコピーのようなものです以下:

require_once 'Zend/Exception.php';
class Hrs_Mongo_Config
{
const VERSION = '1.7.0';
const DEFAULT_HOST = 'localhost';
const DEFAULT_PORT = 27017;
プライベート静的 $host = self::DEFAULT_HOST ;
private static $port = self::DEFAULT_PORT ;
private static $options = array(
'connect' => true,
'timeout' => //'レプリカセット' = > '' // これが指定されている場合、マスターはシードで ismaster データベース コマンドを使用して決定されます
);
public static $conn = '';
public static $defaultDb = '';
public static $ linkStatus = '';
public static function set($server = 'mongodb://localhost:27017', $options = array('connect' => true)) {
if(!$server){
$url = 'mongodb://'.self::$host.':'.self::$port;
}
if(is_array($server)){
if(isset($server['host'])) {
self::$host = $server['host'];
}
if(isset($server['port'])){
self::$port = $server['port'];
}
if(isset($server['user']) && isset($server['pass'])){
$url = 'mongodb://'.$server['user'].':'.$ server['pass'].'@'.self::$host.':'.self::$port;
}else{
$url = 'mongodb://'.self::$host.': '.self::$port;
}
}
if(is_array($options)){
foreach (self::$options as $o_k=>$o_v){
if(isset($options[$o_k ]))
self::$options[$o_k] = $o_v;
}
}
試してみる{

self::$conn = new Mongo($url, self::$options);
self::$linkStatus = '成功';
}catch (Exception $e){
self::$linkStatus = '失敗';
}
if(isset($server['database'])){
self::selectDB($サーバー['データベース']);
}
}
パブリック静的関数 selectDB($database){
if($database){
try {
if(self::$linkStatus=='success')
self::$ defaultDb = self::$conn->selectDB($database);
return self::$defaultDb;
}️ Zend_Exception throw new Zend_Exception ception('Mongodb データベース名を空にすることはできません');



Table.php (mongodb 操作データベースクラスファイル)




コードをコピーします

コードは次のとおりです:

require_once 'Hrs/Mongo/Config.php';
抽象クラス Hrs_Mongo_Table
{
protected $_db = '';
protected $_name = '';
protected $_data = array();
protected $c_options = array(
'fsync'=>true,
'safe'=>true
);
protected $u_options = array(
//'upsert'=>false,
'複数'=> ;true,
'fsync'=>true,
'safe'=>true
);
/*
protected $r_options = array(
);*/
protected $d_options = array(
'fsync'= >true,
'justOne'=>false,
'safe'=>true
);
protected function _setAdapter($database=''){
if(!$database)
throw new Zend_Exception('Mongodbデータ库名は空にすることはできません');
Hrs_Mongo_Config::selectDB($database);
}
public function __construct() {
if(Hrs_Mongo_Config::$conn instanceof Mongo){
$name = t;_名前;
$defDb = Hrs_Mongo_Config::$defaultDb;
$this->_db = $defDb->$name;
}else{
throw new Zend_Exception('Mongodbサービス务器连接失败');
}
}
公開機能insert($data){
if(!$this->testLink()) return false;
$ret = $this->db->insert($data, $this->c_options);
return $ret;
}
public function update($data, $where){
if(!$this->testLink()) return false;
return $this->_db->update($where, $ data, $this->u_options);
}
public function find($where=array(),$limit=0){
if($this->testLink()) {
if($limit>0 ){
$this->_data = $where ? $this->_db->find($where)->limit($limit)->snapshot() : $this->_db->gt;find()->limit($limit)- >snapshot();
}else{
$this->data = $where ? $this->_db->find($where)->limit($limit)->snapshot() : $this->_db->gt;find()->limit($limit)- >snapshot();
}
}
return $this;
}
//カーソルを見つける
/*
* 获取游标对象
*/
パブリック関数 look($where=array(),$fields=array( )){
if($this->testLink()) {
if($fields){
return $where ? $this->db->find($where,$fields): $this->_db->find()->fields($fields);
}else{
return $where ? $this->_db->find($where) : $this->_db->find();
}
}
return false;
}
public function delete($where){
if( !$this->testLink()) return false;
return $this->_db->remove($where, $this->d_options);
}
パブリック関数dropMe(){
if(! $this->testLink()) return false;
return $this->_db->drop();
}
public function __toString(){
return $this->_data;
}
public function toArray(){
$tmpData = array();
foreach($this->_data as $id=>$row){
$one_row = array();
foreach($row as $key=> $col){
$one_row[$key] = $col;
}
$one_row['_id'] = $id;
$tmpData[] = $one_row;
}
return $tmpData;
}
保護された関数testLink(){
return Hrs_Mongo_Config::$linkStatus == '成功' ? true :false;
}
}

要点注意! /*
* 获取游标对象 */ public function look($where=array(),$fields=array()){
if($this->testLink()) {
if($fields){
return $where ? $this->_db->find($where,$fields): $this->_db->find()->fields($fields);
}else{ return $where ? $this->_db->find($where) : $this->_db->find(); } } return false;
}




第二の方法





复制代码

代码如下:


public function find($where=array(),$field=array()){
if($this->testLink()) {
$this-> ;_data = $this->_db->find($where,$field)->sort(array("_id" => -1)); } return $this;
}
复制代码
代码如下:


/*
* 获取游标对象
*/
public function getCursor(){
return $this->_data;
}


2 番目に必要なことは、find から取得するものは array
find($where)->getCursor(); ではなく、MongoCursor オブジェクトであることです


find()現在のオブジェクトを返します
toArray() メソッドは、現在のオブジェクトを配列に変換します。 getCursor() メソッドは、現在のオブジェクトを MongoCursor オブジェクト (カーソル オブジェクト) に変換します。

http://www.bkjia.com/PHPjc/327974.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/327974.html技術記事 MongoCursor オブジェクト カーソル クラス Mongo Config.php 設定ファイル Table.php (mongodb 操作データベース クラス ファイル) Config.php 設定ファイルのコピー コード コードは次のとおりです: ?php require_once 'Zend/E...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。