1.下载适合自己PHP版本的PHP扩展
扩展地址:
http://php.net/manual/en/mongo.installation.php#mongo.installation.nix http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows
2.Thread safe适合PHP模块运行方式、Non-thread safe适合CGI运行方式
3.将php_mongo.dll放入php/ext目录中
4.修改php.ini,加入一行extension=php_mongo.dll,重启web server.
ps:phpStudy默认为CGI模式、wamp默认模块化运行
可以通过php_sapi_name()函数查看当前PHP的运行模式
1.连接mongo数据库服务器(现已不支持Mongo类)
$mongo = new MongoClient(); // 连接localhost:27017
$mongo = new MongoClient("mongodb://example.com"); // 远程数据库,默认端口
$mongo = new MongoClient("mongodb://example.com:65432"); // 指定端口号
?>
2.连接一个数据库
$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.插入一个文档
关联数组是最基本的结构,它保存到集合中.
$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()
$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.添加多个文档
$mongo = new MongoClient();
$collection = $connection->dbname->collectionName;
for($i=0;$i<100;$i++)
{
$collection->insert(array('i'=>$i,"field{$i}"=>$i*2));
}
?>
注意:我们可以插入关键字不同的文档在同一个集合中,这也就是为什么我们称MongoDB是模式自由.
7.统计一个集合中文档数目
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
echo $collection->count();
?>
8.运用Cursor得到所有的文档
$mongo = new MongoClient();
$collection = $connection->dbname->collectionName;
$cursor = $collection->find();
foreach($cursor as $k => $value)
{
echo "$k: ";
var_dump($value);
echo '
';
}
?>
可以打印出集合中所有的文档
$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.查询一系列文档
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
"white-space:pre">
$query = array('i'=>array('$gt'=>50));
// $query = array('i'=>array('$gt'=>20,"\$lte"=>30)) // 20
$cursor = $collection->find($query);
while($cursor->hasNext())
{
var_dump($cursor->getNext());
}
?>
注意:单引号下$字符不需要转义,但是双引号下需要转义
$ne 查询所有不等于该元素的数据
$nin 查询不在范围内的所有数据
11.创建一个索引
$mongo = new MongoClient();
$collection = $mongo->dbname->collectionName;
$collection = ensureIndex(array("i"=>1)); // 创建一个在'i'上升序的索引
$collection->ensureIndex(array('i'=>-1,'j'=>1)) // 创建一个在'i'上降序,在'j'上升序的索引
?>
当数据增长时,索引就成了数据库良好的读取性能的关键.