PHP安裝和操作MongoDB擴充套件
阿新 • • 發佈:2018-12-24
安裝擴充套件
ps:phpStudy預設為CGI模式、wamp預設模組化執行
可以通過php_sapi_name()函式檢視當前PHP的執行模式
MongoClient類使用
1.連線mongo資料庫伺服器(現已不支援Mongo類)
<?php
$mongo = new MongoClient(); // 連線localhost:27017
$mongo = new MongoClient("mongodb://example.com"); // 遠端資料庫,預設埠
$mongo = new MongoClient("mongodb://example.com:65432" ); // 指定埠號
?>
2.連線一個數據庫
<?php
$mongo = new MongoClient();
$db = $mongo->dbname; // 連線資料庫名為dbname的資料庫
?>
資料庫名不用事先建立,當你選擇它時,mongodb即可新建一個dbname資料庫
當你寫錯資料庫名的時候,會不經意間生成一個數據庫,這會導致資料庫混亂.
3.連線一個數據庫集合
<?php
$mongo = new MongoClient();
$db = $mongo->dbname;
$collection = $db->collectionName; // 選擇一個集合
$collection = $mongo->dbname->collectionName; // 直接從連線中選擇資料庫和集合
?>
4.插入一個文件
關聯陣列是最基本的結構,它儲存到集合中.
<?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")
);
$mongo = new MongoClient();
$collection = $connection->dbname->collectionName;
$collection->insert($doc);
?>
5.查詢一個集合使用MongoCollection::findOne()
<?php
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
$document = $collection->findOne();
var_dump($document);
?>
這會輸出
array(6) {
["_id"]=>
object(MongoId)#8 (1) {
["$id"]=>
string(24) "4e2995576803fab768000000"
}
["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"
}
}
6.新增多個文件
<?php
$mongo = new MongoClient();
$collection = $connection->dbname->collectionName;
for($i=0;$i<100;$i++)
{
$collection->insert(array('i'=>$i,"field{$i}"=>$i*2));
}
?>
注意:我們可以插入關鍵字不同的文件在同一個集合中,這也就是為什麼我們稱MongoDB是模式自由.
7.統計一個集合中文件數目
<?php
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
echo $collection->count();
?>
8.運用Cursor得到所有的文件
<?php
$mongo = new MongoClient();
$collection = $connection->dbname->collectionName;
$cursor = $collection->find();
foreach($cursor as $k => $value)
{
echo "$k: ";
var_dump($value);
echo '<br>';
}
?>
可以打印出集合中所有的文件
$k是文件的_id欄位,$value是文件本身.
9.設定查詢標準
<?php
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
$query = array('i'=>71);
$cursor = $collection->find($query);
while($cursor->hasNext)
{
var_dump($cursor->getNext());
}
?>
10.查詢一系列文件
<?php
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
<span style="white-space:pre"></span>
$query = array('i'=>array('$gt'=>50));
// $query = array('i'=>array('$gt'=>20,"\$lte"=>30)) // 20<i<=30
$cursor = $collection->find($query);
while($cursor->hasNext())
{
var_dump($cursor->getNext());
}
?>
注意:單引號下$字元不需要轉義,但是雙引號下需要轉義
$ne 查詢所有不等於該元素的資料
$nin 查詢不在範圍內的所有資料
11.建立一個索引
<?php
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
$collection = ensureIndex(array("i"=>1)); // 建立一個在'i'上升序的索引
$collection->ensureIndex(array('i'=>-1,'j'=>1)) // 建立一個在'i'上降序,在'j'上升序的索引
?>
當資料增長時,索引就成了資料庫良好的讀取效能的關鍵.