欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中MongoDB數(shù)據(jù)庫的連接、添加、修改、查詢、刪除等操作實例

 更新時間:2014年06月27日 10:14:15   投稿:junjie  
這篇文章主要介紹了PHP中MongoDB數(shù)據(jù)庫的連接、添加、修改、查詢、刪除等操作實例,需要的朋友可以參考下

PHP 擴展mongon.mod.dll下載http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows
然后php.ini添加 extension=php_mongo.dll
最后phpinfo() 查找到


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

一、連接數(shù)據(jù)庫

使用下面的代碼創(chuàng)建一個數(shù)據(jù)庫鏈接

復制代碼 代碼如下:
<?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());//能打印出數(shù)據(jù)庫數(shù)組,看看有幾個數(shù)據(jù)庫。

?>

如圖:


上圖說有一個數(shù)據(jù)庫名字叫l(wèi)ocal,總大小1個字節(jié),他是空的。看見ok表示運行成功。

現(xiàn)在你可以使用$connection鏈接來操作數(shù)據(jù)庫了

選擇數(shù)據(jù)庫

使用下面的代碼來選擇一個數(shù)據(jù)庫

復制代碼 代碼如下:
<?php
$db = $connection->dbname;
?>

這里的數(shù)據(jù)庫并不一定是一個已經(jīng)存在的數(shù)據(jù)庫,如果所選擇的數(shù)據(jù)庫不存在,則會新建一個數(shù)據(jù)庫,所以在選擇數(shù)據(jù)庫的時候,注意一定要填上正確的數(shù)據(jù)庫名
如果拼寫錯誤的話,很有可能會新建一個數(shù)據(jù)庫

復制代碼 代碼如下:
<?php
$db = $connection->mybiglongdbname;
//做一些事情
$db = $connection->mybiglongdbnme;
//現(xiàn)在會連上一個新的數(shù)據(jù)庫
?>

獲取一個集合

獲取一個集合跟選擇數(shù)據(jù)庫擁有相同的語法格式

復制代碼 代碼如下:
<?php
$db = $connection->baz;//選擇數(shù)據(jù)庫
$collection = $db->foobar;//選擇foobar集合
//或者使用更簡潔的方式
$collection = $connection->baz->foobar;
?>

插入一個文檔

多維數(shù)組是可以被儲存到數(shù)據(jù)庫中的基本單元
一個隨機的文檔可能是這樣

復制代碼 代碼如下:
<?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″)
);
?>

注意:你可以嵌套數(shù)組與對象,對象與文檔在mongodb中幾乎是一樣的,你可以使用$doc調(diào)用一個文檔或?qū)ο?,但是info字段總是一個對象而不是一個文檔,
本約束適用于所有文檔
使用MongoCollection::insert()插入一個文檔

復制代碼 代碼如下:
<?php
$m = new Mongo();
$collection = $m->foo->bar;
$collection->insert($doc);
?>

mongodb 的 insert()、save()  ,區(qū)別主要是:若存在主鍵,insert()  不做操作,而save() 則更改原來的內(nèi)容為新內(nèi)容。
存在數(shù)據(jù):  { _id : 1, " name " : " n1 " }
insert({ _id : 1, " name " : " n2 " })    會提示錯誤
save({ _id : 1, " name " : " n2 " })     會把 n1 改為  n2  。

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

為了證明上面那段代碼的數(shù)據(jù)已經(jīng)插入到數(shù)據(jù)庫里了,我們進行簡單的 findOne()操作以得到集合中的第一個文檔數(shù)據(jù),這種方法只返回一個文檔數(shù)據(jù),
這種方法適用于在你的查詢語句的時候只匹配一個文檔或者你只關心第一條數(shù)據(jù)

復制代碼 代碼如下:
<?php
$obj = $collection->findOne();
var_dump( $obj );
?>

你會看到下列結(jié)果

復制代碼 代碼如下:
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儲存元素中以_以及$開頭的都是供內(nèi)部使用的

添加更多文檔

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

復制代碼 代碼如下:
<?php
array( “i” => value );
?>

我們可以使用循環(huán)相當有效的插入數(shù)據(jù)
復制代碼 代碼如下:
<?php
for($i=0; $i<100; $i++) {
    $collection->insert( array( “i” => $i ) );
}
?>

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

在一個集合中計算文檔的數(shù)量

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

復制代碼 代碼如下:

<?php
echo $collection->count();
?>

這段代碼將打印出101

MongoCollection::count() 也可以查詢字段數(shù)據(jù)

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

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

復制代碼 代碼如下:
<?php
$cursor = $collection->find();
foreach ($cursor as $id => $value) {
    echo “$id: “;
    var_dump( $value );
}
?>

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

為查詢規(guī)定一個標準
我們可以通過find()方法得到集合中的文檔子集,例如,我們要查詢出集合中i字段為71的文檔,我們可以使用下列方法

復制代碼 代碼如下:
<?php
$query = array( “i” => 71 );
$cursor = $collection->find( $query );
while( $cursor->hasNext() ) {
    var_dump( $cursor->getNext() );
}
?>

我們將打印如下數(shù)據(jù)
復制代碼 代碼如下:
array(2) {
  ["_id"]=>
  object(MongoId)#6 (0) {
  }
  ["i"]=>
  int(71)
  ["_ns"]=>
  “testCollection”
}

為查詢設定一個范圍

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

復制代碼 代碼如下:
<?php
$query = array( “i” => array(‘$gt' =>50)); //注意'$gt'兩邊的單引號
$cursor = $coll->find( $query );
while( $cursor->hasNext() ) {
    var_dump( $cursor->getNext() );
}
?>

我們同樣可以得到20 < i <= 30之間的數(shù)據(jù)

復制代碼 代碼如下:
<?php
$query = array( “i” => array( “\$gt” => 20, “\$lte” => 30 ) );
$cursor = $coll->find( $query );
while( $cursor->hasNext() ) {
    var_dump( $cursor->getNext() );
}
?>

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

復制代碼 代碼如下:
mongo.cmd = “:”

那么上面的代碼就可以替換成
復制代碼 代碼如下:
<?php
$query = array( “i” => array( “:gt” => 20, “:lte” => 30 ) );
?>

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

創(chuàng)建一個索引

MongoDB支持索引,并且可以很容易的加到一個集合中,你只要指定某個字段為索引就行了,并且還可以指定 正序索引(1)與 倒序索引(-1)
下面的代碼為I創(chuàng)建了索引

復制代碼 代碼如下:
<?php
$coll->ensureIndex( array( “i” => 1 ) );  //在”i”上創(chuàng)建了一個索引
$coll->ensureIndex( array( “i” => -1, “j” => 1 ) );//在”i”上創(chuàng)建了倒序索引 在”j”上創(chuàng)建了正序索引
?>

一個完整的簡單例子

這個例子展示了如何鏈接mongodb數(shù)據(jù)庫,如何選擇數(shù)據(jù)庫,如何插入數(shù)據(jù),如何查詢數(shù)據(jù),以及關閉數(shù)據(jù)庫鏈接

復制代碼 代碼如下:
<?php
//鏈接
$m = new Mongo();

// 選擇一個數(shù)據(jù)庫
$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();

//重復顯示結(jié)果
foreach ($cursor as $obj) {
    echo $obj["title"] . "\n";
}

// 關閉鏈接
$m->close();
?>


輸出結(jié)果為
復制代碼 代碼如下:
Calvin and Hobbes
XKCD

相關文章

  • CentOS7.2 安裝 MongoDB 3.4的教程

    CentOS7.2 安裝 MongoDB 3.4的教程

    這篇文章主要介紹了CentOS7.2 安裝 MongoDB 3.4的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • centos6.5中安裝mongodb簡明總結(jié)

    centos6.5中安裝mongodb簡明總結(jié)

    這篇文章主要介紹了centos6.5中安裝mongodb簡明總結(jié),本文簡單的總結(jié)了安裝過程中的6個步驟,需要的朋友可以參考下
    2014-10-10
  • MongoDB批量將時間戳轉(zhuǎn)為通用日期格式示例代碼

    MongoDB批量將時間戳轉(zhuǎn)為通用日期格式示例代碼

    這篇文章主要給大家介紹了關于MongoDB批量將時間戳轉(zhuǎn)為通用日期格式的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • Spring Boot中使用MongoDB數(shù)據(jù)庫的方法

    Spring Boot中使用MongoDB數(shù)據(jù)庫的方法

    MongoDB是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫當中功能最豐富,最像關系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大
    2018-02-02
  • 在Linux ubuntu下安裝mongodb的方法

    在Linux ubuntu下安裝mongodb的方法

    這篇文章主要給大家介紹了在Linux ubuntu系統(tǒng)上如何安裝mongodb的方法,大家都知道MongoDB是多平臺的文檔存儲數(shù)據(jù)庫;所以本文在ubuntu系統(tǒng)中安裝MongoDB。文中給出了詳細的步驟,相信對大家的理解和學習很有幫助,有需要的朋友們下面來一起看看吧。
    2016-11-11
  • mongodb BSON的基本使用教程

    mongodb BSON的基本使用教程

    這篇文章主要給大家介紹了關于mongodb BSON的基本使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解

    MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫安裝配置、基本操作,結(jié)合實例形式詳細分析了MongoDB數(shù)據(jù)庫安裝配置具體步驟、相關命令與基本操作實現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01
  • MongoDB實現(xiàn)備份壓縮的方法教程

    MongoDB實現(xiàn)備份壓縮的方法教程

    這篇文章主要給大家介紹了關于MongoDB實現(xiàn)備份壓縮的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • MongoDB 游標詳解及實例代碼

    MongoDB 游標詳解及實例代碼

    這篇文章主要介紹了 MongoDB 游標詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-04-04
  • SpringBoot系列之MongoDB?Aggregations用法詳解

    SpringBoot系列之MongoDB?Aggregations用法詳解

    MongoDB?中使用聚合(Aggregations)來分析數(shù)據(jù)并從中獲取有意義的信息,本文重點給大家介紹SpringBoot系列之MongoDB?Aggregations用法,感興趣的朋友跟隨小編一起看看吧
    2022-02-02

最新評論