包含mongodbphpodm的詞條

本文目錄一覽:

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的內容就說明安裝成功。

php操作mongoDB資料庫查詢的時候怎樣寫「或」這樣的多個條件查詢代碼?

據我所知,目前mongoDB沒有「或」這個東西

但我剛才在網上查了下

發現了下面的信息,你參考下吧

在mongodb中有$or 操作符的,官網中給出的例子如下:

Simple:

db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )

With another field

db.foo.find( { name : “bob” , $or : [ { a : 1 } , { b : 2 } ] } )

The $or operator retrieves matches for each or clause individually and eliminates duplicates when returning results. A number of $or optimizations are planned for 1.8. See this thread for details.

$or cannot be nested.

MongoDB在ThinkPHP裡面怎麼進行資料庫操作

連接資料庫

$conn=new Mongo(「mongodb://sa:123@localhost」); #帶用戶名密碼

選擇資料庫和集合

$db=$conn-selectDB(「mydb」);

$collection = $db-selectCollection(『column』);

增刪改查

1.插入

$array=array(『column_name』=』col』.rand(100,999),』column_exp』=』xiaocai』);

$result=$collection-insert($array); #簡單插入

2. 修改更新

$where=array(『column_name』=』col123′);

$newdata=array(『column_exp』=』GGGGGGG』,’column_fid』=444);

$result=$collection-update($where,array(『$set』=$newdata));

3.刪除

$where=array(『column_name』=』col685′);

$result=$collection-update($where,array(『$unset』=』column_exp』));

4.查詢

$result = $collection-find();

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

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

相關推薦

發表回復

登錄後才能評論