亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

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

2020-03-14 13:26:22
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP中MongoDB數據庫的連接、添加、修改、查詢、刪除等操作實例,需要的朋友可以參考下
 
 

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

PHP中MongoDB數據庫的連接、添加、修改、查詢、刪除等操作實例
表標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());//能打印出數據庫數組,看看有幾個數據庫。

?>

 

如圖:

PHP中MongoDB數據庫的連接、添加、修改、查詢、刪除等操作實例
上圖說有一個數據庫名字叫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; $i<100; $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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产精品乱码不99按摩| 国产精品亚发布| 亚洲毛茸茸少妇高潮呻吟| 国产精品免费视频xxxx| 国产中文字幕91| 国产91露脸中文字幕在线| 日韩在线观看免费高清完整版| 日韩激情av在线播放| 亚洲第一视频网站| 视频在线观看99| 一色桃子一区二区| 午夜精品在线观看| 日韩免费在线播放| 国产欧美日韩精品在线观看| 国产mv免费观看入口亚洲| 亚洲国产精品一区二区久| 97免费视频在线播放| 欧美精品在线播放| 国产欧美精品在线播放| 亚洲免费视频一区二区| 亚洲国产美女精品久久久久∴| 欧美午夜久久久| 国产精品久久久久久久久久免费| 亚洲国产精品va在线| 亚洲欧美激情另类校园| 亚洲伊人一本大道中文字幕| 亚洲午夜激情免费视频| 中文字幕亚洲欧美一区二区三区| 97在线视频免费播放| 日韩av电影院| 国自在线精品视频| 国产精品久久久久久五月尺| 热久久视久久精品18亚洲精品| 国产一区二区色| 欧美性猛交xxxx偷拍洗澡| 亚洲精品电影久久久| 欧美日韩中文在线观看| 色综合久久中文字幕综合网小说| 日av在线播放中文不卡| 国产日产欧美a一级在线| 欧美性猛交xxxx免费看漫画| 精品国产精品自拍| 国产精品久久久久久久av大片| 精品欧美aⅴ在线网站| 91精品国产成人| 国产欧美日韩中文字幕在线| 国产精品久久久久影院日本| 亚洲国产精品中文| 91a在线视频| 色综合久久久久久中文网| 2019中文字幕在线观看| 亚洲人成网站999久久久综合| 伊人伊人伊人久久| 亚洲精品综合精品自拍| 亚洲精品一区二区三区不| 成人妇女淫片aaaa视频| 一本一本久久a久久精品综合小说| 欧美日本高清一区| 欧美国产日韩一区二区在线观看| 亚洲欧美日韩在线高清直播| 日韩国产精品视频| 日韩av中文字幕在线免费观看| 亚洲欧洲视频在线| 日韩欧美中文免费| 久久精品国产综合| 日韩电影中文字幕在线观看| 欧美人在线观看| 亚洲国产日韩欧美综合久久| 国产精品视频大全| 黑人狂躁日本妞一区二区三区| 亚洲无限av看| 亚洲老头老太hd| 国产精品视频免费在线观看| 欧美激情精品久久久久久| 国产精品极品在线| 久久免费视频在线观看| 国产一区二区三区在线免费观看| 欧美电影电视剧在线观看| 欧美日韩另类字幕中文| 欧美噜噜久久久xxx| 欧美在线不卡区| 中文字幕精品久久| 日本精品视频在线观看| 国产精品美女av| 成人网在线免费观看| 国产精品免费视频xxxx| 日韩精品在线视频美女| 中文字幕欧美精品在线| 亚洲日本aⅴ片在线观看香蕉| 亚洲精品在线不卡| 久久偷看各类女兵18女厕嘘嘘| 91国产精品电影| 亚洲精品国产成人| 一本一本久久a久久精品综合小说| 国产午夜精品麻豆| 91精品久久久久久久久久久| 日韩视频在线免费观看| 韩日欧美一区二区| 欧美性xxxx18| 亚洲视频在线免费看| 色吧影院999| 久久香蕉精品香蕉| 黑人欧美xxxx| 亚洲伊人久久综合| 国产亚洲人成网站在线观看| 国产精品久久久久77777| 欧美大片欧美激情性色a∨久久| 日韩不卡中文字幕| 精品久久久一区| 国产精品美女午夜av| 成人国内精品久久久久一区| 91精品国产沙发| 亚洲偷熟乱区亚洲香蕉av| 国产成人综合精品| 国产91热爆ts人妖在线| 欧美成人小视频| 日本高清+成人网在线观看| 亚洲第一精品自拍| 日韩在线视频观看| 97久久精品人搡人人玩| 久久精品在线视频| 国产欧美一区二区三区久久人妖| 久久精品中文字幕电影| 91免费高清视频| 亚洲美女福利视频网站| 欧美日产国产成人免费图片| 国产精品精品一区二区三区午夜版| 国产精品美女网站| 亚洲精品不卡在线| 欧美成人黄色小视频| 欧美一区在线直播| 亚洲图片在区色| 亚洲色图偷窥自拍| 国产免费一区二区三区在线观看| 亚洲人成在线电影| 97成人精品区在线播放| 中文字幕av一区二区三区谷原希美| 日本不卡免费高清视频| 日韩中文字幕在线视频| 国产精品白丝jk喷水视频一区| 久久久久久久久久久人体| 亚洲成人网在线| 久久久www成人免费精品张筱雨| 久久成人精品一区二区三区| 欧美日韩国产丝袜美女| 欧美电影在线观看高清| 欧美精品激情在线观看| 欧美日韩中文在线观看| 国产精品成人av在线| 精品久久久久久久久国产字幕| 黄色一区二区在线| 日韩在线观看免费| 欧美成人免费一级人片100| 色噜噜狠狠狠综合曰曰曰| 成人激情av在线| 中文字幕亚洲天堂| 日韩在线中文字| 亚洲免费视频观看| 亚洲欧美日韩中文视频| 日韩免费精品视频| 日韩在线视频观看| 91九色综合久久| 在线观看91久久久久久| 日本午夜在线亚洲.国产|