phpmongodbclose的簡單介紹

本文目錄一覽:

php mongoclient 連接 mongodb ,出現 “No candidate servers found”錯誤。實在沒辦法,求大神們解答。

表標PHP已經自帶了mongo功能,你就可以操作下面的代碼(但是你必須有安裝mongodb伺服器)一、連接資料庫使用下面的代碼創建一個資料庫鏈接複製代碼代碼如下:listDBs());//能列印出資料庫數組,看看有幾個資料庫。?如圖:上圖說有一個資料庫名字叫local,總大小1個位元組,他是空的。看見ok表示運行成功。現在你可以使用$connection鏈接來操作資料庫了選擇資料庫使用下面的代碼來選擇一個資料庫複製代碼代碼如下:dbname;?這裡的資料庫並不一定是一個已經存在的資料庫,如果所選擇的資料庫不存在,則會新建一個資料庫,所以在選擇資料庫的時候,注意一定要填上正確的資料庫名如果拼寫錯誤的話,很有可能會新建一個資料庫複製代碼代碼如下:mybiglongdbname;//做一些事情$db=$connection-mybiglongdbnme;//現在會連上一個新的資料庫?獲取一個集合獲取一個集合跟選擇資料庫擁有相同的語法格式複製代碼代碼如下:baz;//選擇資料庫$collection=$db-foobar;//選擇foobar集合//或者使用更簡潔的方式$collection=$connection-baz-foobar;?插入一個文檔多維數組是可以被儲存到資料庫中的基本單元一個隨機的文檔可能是這樣複製代碼代碼如下:「MongoDB」,「type」=「database」,「count」=1,「info」=(object)array(「x」=203,「y」=102),「versions」=array(「0.9.7″,「0.9.8″,「0.9.9″));?注意:你可以嵌套數組與對象,對象與文檔在mongodb中幾乎是一樣的,你可以使用$doc調用一個文檔或對象,但是info欄位總是一個對象而不是一個文檔,本約束適用於所有文檔使用MongoCollection::insert()插入一個文檔複製代碼代碼如下:foo-bar;$collection-insert($doc);?mongodb的insert()、save(),區別主要是:若存在主鍵,insert()不做操作,而save()則更改原來的內容為新內容。存在數據:{_id:1,”name”:”n1″}insert({_id:1,”name”:”n2″})會提示錯誤save({_id:1,”name”:”n2″})會把n1改為n2。使用MongoCollection::findOne()查詢文檔為了證明上面那段代碼的數據已經插入到資料庫里了,我們進行簡單的findOne()操作以得到集合中的第一個文檔數據,這種方法只返回一個文檔數據,這種方法適用於在你的查詢語句的時候只匹配一個文檔或者你只關心第一條數據複製代碼代碼如下:findOne();var_dump($obj);?你會看到下列結果複製代碼代碼如下:array(5){[“_id”]=object(MongoId)#6(0){}[“name”]string(7)「MongoDB」[“type”]=string(8)「database」[“count”]=int(1)[“info”]=array(2){[“x”]=int(203)[“y”]=int(102)}[“versions”]array(3){[0]=string(5)「0.9.7″[1]=string(5)「0.9.8″[2]=string(5)「0.9.9″}}注意_id欄位自動載入了文檔上,MongoDB儲存元素中以_以及$開頭的都是供內部使用的添加文檔為了做一些更有趣的事情,我們添加簡單的文檔到集合中,這些文檔如下複製代碼代碼如下:value);?我們可以使用循環相當有效的插入數據複製代碼代碼如下:insert(array(「i」=$i));}?注意:我們可以插入不同的欄位在同一字符集中,在這方面意味著MongoDB擁有非常自由的儲存模式在一個集合中計算文檔的數量現在我們插入了101個文檔(我們用循環插入了100個,之前還插入了一個),我們可以使用count()來看看我們的數據是不是都被插入進去了複製代碼代碼如下:count();?這段代碼將列印出101MongoCollection::count()也可以查詢欄位數據使用游標得到集合中的所有文檔為了得到集合中的所有文檔,我們可以使用MongoCollection::find()方法,find()方法返回一個MongoCursor對象,可以讓我們重複得到查詢所匹配的的文檔複製代碼代碼如下:find();foreach($cursoras$id=$value){echo「$id:「;var_dump($value);}?這樣我們會列印出集合中的這101個文檔,$id就是文檔中的_id欄位,$value就是文檔本身為查詢規定一個標準我們可以通過find()方法得到集合中的文檔子集,例如,我們要查詢出集合中i欄位為71的文檔,我們可以使用下列方法複製代碼代碼如下:71);$cursor=$collection-find($query);while($cursor-hasNext()){var_dump($cursor-getNext());}?我們將列印如下數據複製代碼代碼如下:array(2){[“_id”]=object(MongoId)#6(0){}[“i”]=int(71)[“_ns”]=「testCollection」}為查詢設定一個範圍我們可以通過find()創建一個查詢語句以得集合中的一個子集,例如如果我們得到所有」i」50的文檔,我們可以使用如下代碼複製代碼代碼如下:array(『$gt’=50));//注意’$gt’兩邊的單引號$cursor=$coll-find($query);while($cursor-hasNext()){var_dump($cursor-getNext());}?我們同樣可以得到20array(「\$gt」=20,「\$lte」=30));$cursor=$coll-find($query);while($cursor-hasNext()){var_dump($cursor-getNext());}?我們非常容易漏掉$美元符號,你也可以選擇你自定義的符號來代替美元符號,選擇一個不會在你的建裡面出現的符號例如」:」,在php.ini中加上這麼一句話複製代碼代碼如下:mongo.cmd=「:」那麼上面的代碼就可以替換成複製代碼代碼如下:array(「:gt」=20,「:lte」=30));?當然你也可以使用ini_set(「mongo.cmd」,「:」)的方法來改變創建一個索引MongoDB支持索引,並且可以很容易的加到一個集合中,你只要指定某個欄位為索引就行了,並且還可以指定正序索引(1)與倒序索引(-1)下面的代碼為I創建了索引複製代碼代碼如下:ensureIndex(array(「i」=1));//在」i」上創建了一個索引$coll-ensureIndex(array(「i」=-1,「j」=1));//在」i」上創建了倒序索引在」j」上創建了正序索引?一個完整的簡單例子這個例子展示了如何鏈接mongodb資料庫,如何選擇資料庫,如何插入數據,如何查詢數據,以及關閉資料庫鏈接複製代碼代碼如下:comedy;$collection=$db-cartoons;//添加一個元素$obj=array(“title”=”CalvinandHobbes”,”author”=”BillWatterson”);$collection-insert($obj);//修改$newdata=array(‘$set’=array(“title”=”CalvinandHobbes”));$collection-update(array(“author”=”caleng”),$newdata);//刪除$collection-remove(array(‘author’=’caleng’),array(“justOne”=true));//添加另一個元素,使用不同的格式$obj=array(“title”=”XKCD”,”online”=true);$collection-insert($obj);//查詢所有的集合$cursor=$collection-find();//重複顯示結果foreach($cursoras$obj){echo$obj[“title”].”\n”;}//關閉鏈接$m-close();?輸出結果為複製代碼代碼如下:CalvinandHobbesXKCD

php 遠程連接Mongodb問題

?php //這裡採用默認連接本機的27017埠,當然你也可以連接遠程主機如192.168.0.4:27017,如果埠是27017,埠可以省略 $m = new Mongo(); // 選擇comedy資料庫,如果以前沒該資料庫會自動創建,也可以用$m-selectDB(“comedy”); $db = $m-comedy; //選擇comedy裡面的collection集合,相當於RDBMS裡面的表,也-可以使用 $collection = $db-collection; $db-selectCollection(“collection”); //添加一個元素 $obj = array( “title” = “Calvin and Hobbes-“.date(‘i:s’), “author” = “Bill Watterson” ); //將$obj 添加到$collection 集合中 $collection-insert($obj); //添加另一個元素 $obj = array( “title” = “XKCD-“.date(‘i:s’), “online” = true ); $collection-insert($obj); //查詢所有的記錄 $cursor = $collection-find(); //遍歷所有集合中的文檔 foreach ($cursor as $obj) { echo $obj[“title”] . “br /\n”; } //刪除所有數據 //$collection-remove(); //刪除 name 為hm //$collection-remove(array(‘name’=’hm’)); //斷開MongoDB連接 $m-close(); ?

你可以去後盾人平台看看,裡面的東西不錯

PHP 從 MongoDb 中查詢數據怎麼樣實現

創建Mongodb資料庫 由於Mongodb不是關係型資料庫文件,實際上,它並不存在傳統關係型資料庫中的所謂「資料庫」的概念,但不用擔心,當你第一次新增數據時,mongodb就會以collection集合的形式進行保存和新建,而不需要你手工去新建立。以後可以去後盾人上面看看哦⊙∀⊙!裡面有教學是哦

mongodb 需要close嗎

如果使用驅動操作的話是不需要自己手動close連接的,如果是使用原生操作的話是需要的,比如nodejs的mongoose驅動不需要,使用mongodb驅動就需要。

mongodb 3.2怎麼在php中連接

表標PHP已經自帶了mongo功能,你就可以操作下面的代碼(但是你必須有安裝mongodb伺服器)

一、連接資料庫

使用下面的代碼創建一個資料庫鏈接

複製代碼 代碼如下:

?php

$connection = new Mongo(mongodb://192.168.1.5:27017); //鏈接到 192.168.1.5:27017//27017埠是默認的。

$connection = new Mongo( “example.com” ); //鏈接到遠程主機(默認埠)

$connection = new Mongo( “example.com:65432” ); //鏈接到遠程主機的自定義的埠

print_r($connection-listDBs());//能列印出資料庫數組,看看有幾個資料庫。

?

如圖:

上圖說有一個資料庫名字叫local,總大小1個位元組,他是空的。看見ok表示運行成功。

現在你可以使用$connection鏈接來操作資料庫了

選擇資料庫

使用下面的代碼來選擇一個資料庫

複製代碼 代碼如下:

?php

$db = $connection-dbname;

?

這裡的資料庫並不一定是一個已經存在的資料庫,如果所選擇的資料庫不存在,則會新建一個資料庫,所以在選擇資料庫的時候,注意一定要填上正確的資料庫名

如果拼寫錯誤的話,很有可能會新建一個資料庫

複製代碼 代碼如下:

?php

$db = $connection-mybiglongdbname;

//做一些事情

$db = $connection-mybiglongdbnme;

//現在會連上一個新的資料庫

?

獲取一個集合

獲取一個集合跟選擇資料庫擁有相同的語法格式

複製代碼 代碼如下:

?php

$db = $connection-baz;//選擇資料庫

$collection = $db-foobar;//選擇foobar集合

//或者使用更簡潔的方式

$collection = $connection-baz-foobar;

?

插入一個文檔

多維數組是可以被儲存到資料庫中的基本單元

一個隨機的文檔可能是這樣

複製代碼 代碼如下:

?php

$doc = array(

」name」 = 「MongoDB」,

「type」 = 「database」,

「count」 = 1,

「info」 = (object)array( 「x」 = 203,

「y」 = 102),

「versions」 = array(「0.9.7″, 「0.9.8″, 「0.9.9″)

);

?

注意:你可以嵌套數組與對象,對象與文檔在mongodb中幾乎是一樣的,你可以使用$doc調用一個文檔或對象,但是info欄位總是一個對象而不是一個文檔,

本約束適用於所有文檔

使用MongoCollection::insert()插入一個文檔

複製代碼 代碼如下:

?php

$m = new Mongo();

$collection = $m-foo-bar;

$collection-insert($doc);

?

mongodb 的 insert()、save() ,區別主要是:若存在主鍵,insert() 不做操作,而save() 則更改原來的內容為新內容。

存在數據: { _id : 1, ” name ” : ” n1 ” }

insert({ _id : 1, ” name ” : ” n2 ” }) 會提示錯誤

save({ _id : 1, ” name ” : ” n2 ” }) 會把 n1 改為 n2 。

使用MongoCollection::findOne()查詢文檔

為了證明上面那段代碼的數據已經插入到資料庫里了,我們進行簡單的 findOne()操作以得到集合中的第一個文檔數據,這種方法只返回一個文檔數據,

這種方法適用於在你的查詢語句的時候只匹配一個文檔或者你只關心第一條數據

複製代碼 代碼如下:

?php

$obj = $collection-findOne();

var_dump( $obj );

?

你會看到下列結果

複製代碼 代碼如下:

array(5) {

[“_id”]=

object(MongoId)#6 (0) {

}

[“name”]

string(7) 「MongoDB」

[“type”]=

string(8) 「database」

[“count”]=

int(1)

[“info”]=

array (2) {

[“x”]=

int(203)

[“y”]=

int(102)

}

[“versions”]

array(3) {

[0]=

string(5) 「0.9.7″

[1]=

string(5) 「0.9.8″

[2]=

string(5) 「0.9.9″

}

}

注意_id欄位自動載入了文檔上,MongoDB儲存元素中以_以及$開頭的都是供內部使用的

添加更多文檔

為了做一些更有趣的事情,我們添加更多簡單的文檔到集合中,這些文檔如下

複製代碼 代碼如下:

?php

array( 「i」 = value );

?

我們可以使用循環相當有效的插入數據

複製代碼 代碼如下:

?php

for($i=0; $i100; $i++) {

$collection-insert( array( 「i」 = $i ) );

}

?

注意:我們可以插入不同的欄位在同一字符集中,在這方面意味著MongoDB擁有非常自由的儲存模式

在一個集合中計算文檔的數量

現在我們插入了101個文檔(我們用循環插入了100個,之前還插入了一個),我們可以使用count()來看看我們的數據是不是都被插入進去了

複製代碼 代碼如下:

?php

echo $collection-count();

?

這段代碼將列印出101

MongoCollection::count() 也可以查詢欄位數據

使用游標得到集合中的所有文檔

為了得到集合中的所有文檔,我們可以使用 MongoCollection::find()方法,find()方法返回一個 MongoCursor對象,可以讓我們重複得到查詢所匹配的的文檔

複製代碼 代碼如下:

?php

$cursor = $collection-find();

foreach ($cursor as $id = $value) {

echo 「$id: 「;

var_dump( $value );

}

?

這樣我們會列印出集合中的這101個文檔,$id就是文檔中的_id欄位,$value 就是文檔本身

為查詢規定一個標準

我們可以通過find()方法得到集合中的文檔子集,例如,我們要查詢出集合中i欄位為71的文檔,我們可以使用下列方法

複製代碼 代碼如下:

?php

$query = array( 「i」 = 71 );

$cursor = $collection-find( $query );

while( $cursor-hasNext() ) {

var_dump( $cursor-getNext() );

}

?

我們將列印如下數據

複製代碼 代碼如下:

array(2) {

[“_id”]=

object(MongoId)#6 (0) {

}

[“i”]=

int(71)

[“_ns”]=

「testCollection」

}

為查詢設定一個範圍

我們可以通過find()創建一個查詢語句以得集合中的一個子集,例如如果我們得到所有」i」50的文檔,我們可以使用如下代碼

複製代碼 代碼如下:

?php

$query = array( 「i」 = array(『$gt’ =50)); //注意’$gt’兩邊的單引號

$cursor = $coll-find( $query );

while( $cursor-hasNext() ) {

var_dump( $cursor-getNext() );

}

?

我們同樣可以得到20 i = 30之間的數據

複製代碼 代碼如下:

?php

$query = array( 「i」 = array( 「\$gt」 = 20, 「\$lte」 = 30 ) );

$cursor = $coll-find( $query );

while( $cursor-hasNext() ) {

var_dump( $cursor-getNext() );

}

?

我們非常容易漏掉$美元符號,你也可以選擇你自定義的符號來代替美元符號,選擇一個不會在你的建裡面出現的符號例如」:」,在php.ini中加上這麼一句話

複製代碼 代碼如下:

mongo.cmd = 「:」

那麼上面的代碼就可以替換成

複製代碼 代碼如下:

?php

$query = array( 「i」 = array( 「:gt」 = 20, 「:lte」 = 30 ) );

?

當然你也可以使用ini_set(「mongo.cmd」, 「:」)的方法來改變

創建一個索引

MongoDB支持索引,並且可以很容易的加到一個集合中,你只要指定某個欄位為索引就行了,並且還可以指定 正序索引(1)與 倒序索引(-1)

下面的代碼為I創建了索引

複製代碼 代碼如下:

?php

$coll-ensureIndex( array( 「i」 = 1 ) ); //在」i」上創建了一個索引

$coll-ensureIndex( array( 「i」 = -1, 「j」 = 1 ) );//在」i」上創建了倒序索引 在」j」上創建了正序索引

?

一個完整的簡單例子

這個例子展示了如何鏈接mongodb資料庫,如何選擇資料庫,如何插入數據,如何查詢數據,以及關閉資料庫鏈接

複製代碼 代碼如下:

?php

//鏈接

$m = new Mongo();

// 選擇一個資料庫

$db = $m-comedy;

$collection = $db-cartoons;

//添加一個元素

$obj = array( “title” = “Calvin and Hobbes”, “author” = “Bill Watterson” );

$collection-insert($obj);

//修改

$newdata = array(‘$set’ = array(“title” = “Calvin and Hobbes”));

$collection-update(array(“author” = “caleng”), $newdata);

//刪除

$collection-remove(array(‘author’=’caleng’), array(“justOne” = true));

//添加另一個元素,使用不同的格式

$obj = array( “title” = “XKCD”, “online” = true );

$collection-insert($obj);

//查詢所有的集合

$cursor = $collection-find();

//重複顯示結果

foreach ($cursor as $obj) {

echo $obj[“title”] . “\n”;

}

// 關閉鏈接

$m-close();

?

輸出結果為

複製代碼 代碼如下:

Calvin and Hobbes

XKCD

如何為PHP安裝mongodb的擴展

1.首先下載php的mongodb擴展

從這個網址下載mongodb的擴展源碼包

1

wget

2.解壓安裝包

1

tar zxf mongo-1.4.5.tgz

3.進入解壓目錄,運行phpize進行安裝準備

1

2

cd mongo-1.4.5

/usr/local/php/bin/phpize

4.安裝編譯

上述命令運行完後,在目錄下就生成了configure文件

使用./configure命令進行安裝配置,然後使用make make install進行編譯安裝,命令如下:

1

2

./configure –with-php-config=/usr/local/php/bin/php-config

make make install

5.編輯php.ini增加下述一行添加mongodb擴展

1

extension=mongo.so

重啟web容器,然後查看phpinfo,看到mongodb的內容就說明安裝成功。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192901.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 10:31
下一篇 2024-12-01 10:31

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Guava Limiter——限流器的簡單易用

    本文將從多個維度對Guava Limiter進行詳細闡述,介紹其定義、使用方法、工作原理和案例應用等方面,並給出完整的代碼示例,希望能夠幫助讀者更好地了解和使用該庫。 一、定義 G…

    編程 2025-04-27
  • 製作一個簡單的管理系統的成本及實現

    想要製作一個簡單的管理系統,需要進行技術選型、開發、測試等過程,那麼這個過程會花費多少錢呢?我們將從多個方面來闡述製作一個簡單的管理系統的成本及實現。 一、技術選型 當我們開始思考…

    編程 2025-04-27
  • 2的32次方-1:一個看似簡單卻又複雜的數字

    對於計算機領域的人來說,2的32次方-1(也就是十進位下的4294967295)這個數字並不陌生。它經常被用來表示IPv4地址或者無符號32位整數的最大值。但實際上,這個數字卻包含…

    編程 2025-04-27

發表回復

登錄後才能評論