真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP操作MongoDB的方法

這篇文章主要介紹了PHP操作MongoDB的方法的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇PHP操作MongoDB的方法文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、虛擬空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、大祥網(wǎng)站維護(hù)、網(wǎng)站推廣。

PHP的mongodb擴(kuò)展安裝

1

2

3

4

5

6

# https://github.com/mongodb/mongo-php-driver/archive/master.zip

# unzip master.zip

# /usr/local/php/bin/phpize

# ./config --with-php-config=/usr/local/php/bin/php-config

# make

# make install

將mongo.so添加到php.ini

1

2

# vim /usr/local/php/etc/php.ini

extension = mongo.so

重啟php-fpm生效

1

# /usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.comf

php的mongodb擴(kuò)展,提供了4個(gè)核心類(lèi)接口
1). 針對(duì)mongodb的連接操作類(lèi)MongoClient

2). 針對(duì)mongodb的數(shù)據(jù)庫(kù)操作類(lèi)MongoDB

3). 針對(duì)mongodb的集合操作類(lèi)MongoCollection

4). 針對(duì)mongodb的查詢結(jié)果集(游標(biāo))操作類(lèi)MongoCursor

連接MongoDB
mongodb驅(qū)動(dòng)連接格式為:mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]],如:
mongodb://localhost
mongodb://user:password@localhost
mongodb://user:password@localhost/database
mongodb://example1.com:27017,example2.com:27017
mongodb://localhost,localhost:27018,localhost:27019
mongodb://host1,host2,host3/?slaveOk=true
mongodb://localhost/?safe=true
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName
mongodb://localhost/?journal=true&w=majority&wTimeoutMS=20000
具體含義參見(jiàn)《ttlsa教程系列之mongodb—(一)mongodb介紹》 http://www.ttlsa.com/html/1594.html

PHP連接實(shí)例:

1

2

3

4

5

$m = new MongoClient("mongodb://localhost/?journal=true&w=majority&wTimeoutMS=20000");

$m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName"));

$m = new MongoClient("mongodb://rs1.example.com:27017", array("replicaSet" => "myReplSetName"));

$m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017", array("replicaSet" => "myReplSetName","wTimeoutMS"=>20000));

在連接到復(fù)制集時(shí),用它來(lái)判斷哪臺(tái)是primary。返回主機(jī)名稱(chēng)、端口號(hào)、健康程度、狀態(tài)(1-primary,2-secondary,0-other)、ping耗時(shí)、前一次ping的時(shí)間戳。

1

$m->getHosts();

列出所有數(shù)據(jù)庫(kù),返回?cái)?shù)據(jù)庫(kù)名稱(chēng)、大小、是否為空以及總大小、ok狀態(tài)。

1

$m->listDBs();

選擇數(shù)據(jù)庫(kù),返回?cái)?shù)據(jù)庫(kù)對(duì)象

1

2

3

$db = $m->db_name;

$db = $m->selectDB(db_name);

選擇表(集合),返回文檔集合對(duì)象

1

2

3

4

5

$col = $m->selectCollection(db_name, col_name);

$col = $m->selectDB(db_name)->selectCollection(col_name);

$col = $m->db_name->col_name;

列出所有集合,返回集合對(duì)象

1

$col_list = $db->listCollections();

獲取當(dāng)前選擇的數(shù)據(jù)庫(kù)名,返回?cái)?shù)據(jù)庫(kù)名

1

$db_name = $db->__toString();

刪除當(dāng)前數(shù)據(jù)庫(kù)

1

$db->drop();

設(shè)置slaveok狀態(tài)(可讀狀態(tài)設(shè)置)

1

$db->setSlaveOkay(true/false);

獲取slaveok當(dāng)前狀態(tài)

1

$db->getSlaveOkay();

插入數(shù)據(jù)MongoCollection::insert(array $a,array $options)
array $a 要插入的數(shù)組
array $options 選項(xiàng):safe 是否返回操作結(jié)果信息;fsync 是否直接插入到物理硬盤(pán);w 寫(xiě)入份數(shù);timeout 超時(shí)時(shí)間

1

2

3

4

5

$coll = $m->db_name->col_name;

$a = array(’website'=>’www.ttlsa.com');

$options = array(’safe’=>true);

$rs = $coll->insert($a,$options); $rs為數(shù)組,包含操作信息

刪除集合中的記錄MongoCollection::remove(array $criteria,array $options)
array $criteria 條件
array $options 選項(xiàng): safe 是否返回操作結(jié)果; fsync 是否是直接影響到物理硬盤(pán); justOne 是否只影響一條記錄

1

2

3

4

5

$coll = $m->db_name->col_name;

$c = array(’website'=>'www.ttlsa.com',’hit’=>array(’$lt’=>100));

$options = array(’safe’=>true);

$rs = $coll->remove($c,$options); $rs為數(shù)組,包含操作信息

更新集合中的記錄MongoCollection::update(array $criceria,array $newobj,array $options)
array $criteria 條件
array $newobj 要更新的內(nèi)容
array $options 選項(xiàng): safe 是否返回操作結(jié)果; fsync 是否是直接影響到物理硬盤(pán); upsert 是否沒(méi)有匹配數(shù)據(jù)就添加一條新的; multiple 是否影響所有符合條件的記錄,默認(rèn)只影響一條

1

2

3

4

5

6

$coll = $m->db_name->coll_name;

$c = array(’uid'=>888,’login_count’=>array(’$lt’=>100));

$newobj = array(’vip'=>’1',’score'=>’10000');

$options = array(’safe’=>true,’multiple’=>true);

$rs = $coll->remove($c,$newobj,$options); $rs為數(shù)組,包含操作信息

查詢集合獲取單條記錄MongoCollection::findOne(array $query,array $fields)
array $query 條件
array $fields 要獲得的字段

1

2

3

4

5

$coll = $m->db_name->col_name;

$query = array(’score’=>array(’$lt’=>10000));

$fields = array(’uid'=>true,’vip'=>true);

$rs = $coll->findOne($query,$fields); 返回array或null

獲取多條記錄MongoCollection::find(array $query,array $fields)
array $query 條件
array $fields 要獲得的字段

1

2

3

4

5

6

$coll = $m->db_name->col_name;

$query = array(’s’=>array(’$lt’=>100));

$query = array(’score’=>array(’$lt’=>10000));

$fields = array(’uid'=>true,’vip'=>true);

$rs = $coll->find($query,$fields); 返回游標(biāo)對(duì)象MongoCursor。

獲取查詢結(jié)果數(shù)量

1

2

$cursor = $coll->find();

$num = $cursor->count();

選定列MongoCursor::fields

1

2

3

$cursor->fields(array(column_name1 => true, column_name2 => false));

$cursor = $coll->find()->fields(array(column_name1 => true, column_name2 => false));

分頁(yè)

1

$cursor = $coll->find()->limit(30)->skip(0);

排序MongoCursor::sort

1

$cursor = $coll->find()->sort(array(column_name1 => -1, column_name2 => 1));

取查詢結(jié)果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$cursor = $coll->find($query,$fields);

while($cursor->hasNext()){

    $r = $cursor->getNext();

    var_dump($r);

}

或者

$cursor = $coll->find($query,$fields);

$r = array();

foreache($cursor as $k=>$v){

    var_dump($v);

    $r[] = $v;

}

或者

$cursor = $coll->find($query,$fields);

$array= iterator_to_array($cursor);

快照MongoCursor::snapshot
保證一致性。在做find()操作時(shí),獲得$cursor之后,這個(gè)游標(biāo)是動(dòng)態(tài)的,在循環(huán)取結(jié)果過(guò)程中,如果有其他連接來(lái)更改符合條件的記錄時(shí),這個(gè)$cursor也會(huì)跟著變化的。$cursor->snapshot();之后,再插入或刪除符合條件的記錄時(shí),獲取的結(jié)果集將不再變化。如果是小于1M的結(jié)果集會(huì)自動(dòng)被當(dāng)作snapshot來(lái)處理。
如果要獲取$cursor之后不變的結(jié)果需要這么做:

1

2

$cursor = $coll->find($query,$fields);

$cursor->snapshot();

snapshot對(duì)findOne無(wú)效。

關(guān)于“PHP操作MongoDB的方法”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“PHP操作MongoDB的方法”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章標(biāo)題:PHP操作MongoDB的方法
當(dāng)前鏈接:http://weahome.cn/article/pcsdcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部