您好,欢迎访问一九零五行业门户网

PHP操作mongodb

基础教程: 1.连接mongo数据库服务器。 语法范例: ?php$connection = new mongoclient(); // 连接到本地数据库,默认端口为27017.即:localhost:27017$connection = new mongoclient( mongodb://example.com ); // 连接远程数据库,默认端口为27017$connect
基础教程:1.连接mongo数据库服务器。语法范例:

2.连接一个数据库语法范例:
dbname;//选择数据库名为dbname的数据库?>
数据库名不用事先创建,当你选择它时,mongodb可以创建一个新的名为dbname数据库。注意:不要写错数据库名,否则你回不经意间生成一个数据库,这会导致数据库混乱。
以下程序会因拼写错误生成两个数据库:
mybiloglongdbname;//连接一个数据库
$db = $connection->mybiloglongdbanme;//连接一个不一样名字的数据库
?>
3.连接一个数据库集合获取一个集合和连接一个数据库语法是相同的。
语法范例:
baz;$collection = $db->foobar;//选择一个集合
//也可以直接选择一个数据库和一个集合
$collection = $connection->baz->foobar;
?>










集合和关系型数据库中的表类似。
4.插入一个文档关联数组是最基本的结构,它保存到集合中。
一些随机的文档可以是:
mongodb,
type=>database,
count=>1;
info=>(object)array(x=>203, y=>102),
versions=>array(0.9.7, 0.9.8, 0.9.9)
);
?>










注意:你可以有嵌套的数组和对象。驱动程序通常将一个关联数组作为一个数据库中的对像来保存。一个数字索引数组通常按以下情况作为一个数组来存储:关键字从0开始,不间断。或者作为一个对象
:数组的关键字不是从0开始,中间会有间断。
插入这个文档,可以用这个函数 mongocollection::insert():
database->collectionname;






$collection->insert($doc);?>
5,查找一个集合使用 mongocollection::findone()为了能搜索出集合数据,我们事先已经在数据库中存储了相应的数据。我们只需要一个简单的方法 
mongocollection::findone() 便可以从集合中取到唯一的文档。这个方法适用于:只有唯一的一条数据匹配
查询数据。
实例:
database->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 }}
我们注意到这里有一个“_id”的字段已经被自动加到文档中,_id 是主键字段。如果文档没有定义主键字段,驱动程序会自动添加一个。
若你定义一个你自己的_id字段,它必须对于整个集合是独一无二的。
例子:
datebase;
$db->foo->insert(array(_id=>1));

//下面这个将抛出一个异常
$db->foo->insert(array(_id=>1));

//下面这个是正确的,因为这个是在另外一个集合中
$db->bar->insert(array(_id=>1));
?>










你也可以通过传递数组(w=>0)作为第二个元素,选择关闭该行为。也就是说驱动程序不必等待数据库去确认写,也不必抛出复制_id的异常。
6.添加多个文档为了让我们做更多有意思的事情,我们来添加许多简单的文档给集合。
这些文档仅仅是这种形式的数据array(i=>value),我们可以在一个循环中相当有效率的添加上。
database->collectionname;






for($i=0;$i{




$collection->insert(array('i'=>$i, field{$i}=>$i*2));
}




?>










注意:我们可以插入关键字不同的文档在同一个集合中,这也就是为什么我们称mongodb是模式自由。
7.统计一个集合中文档数目当我们在集合中插入101个文档时,我们可以用方法mongocollection::count()来统计文档数:
database->collectionname;






echo $collection->count();
?>










输出结果为:1018.运用cursor得到所有的文档为了得到集合中所有的文档,我们将用mongocollection::find()。
find()方法可以返回一个mongocursor对象,这个对象允许我们可以迭代出符合我们查询条件的文档。
然后 查询所有文档,并打印出来。
database->collectionname;









$cursor = $collection->find();
foreach($cursor as $id=>$value)
{



echo $id:;
var_dump($value);
}




?>










可以打印出集合中所有的文档。$id i是 文档的_id字段,$value是文档本身。
9.设置查询标准我们可以用一条查询语句通过方法 mongocollection::find()来获得集合中文档的一个子集。例如:如果你想找到  i字段的值为71的文档,我们可以按下面的做法去做:
database->collectionname;











$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}
10.查询一系列文档我们可以从集合中查询一系列文档。
例如,如果你想获得‘i’>50的所有文档,我们可以按下面这样去写
database->collectionname;











$query = array(i=>array('$gt'=>50));
$cursor = $coll->find($query);





while($cursor->hasnext())
{



var_dump($cursor->getnext());


}




?>










我们也可以查询一个范围:比如 20db->collectionname;



$query = array('i'=>array('$gt'=>20,\$lte=>30));
$cursor = $collection->find($query);






while($cursor->hasnext)

{



var_dump($cursor->getnext());


}




?>










$gt 大于; $gte 大于等于 ; $in  范围 ; $it 小于;$lte小于等于;  find( { qty: { $in: [ 5, 15 ] } } )
$ne 查询所有不等于该元素的数据;
$nin 查询不在范围内的所有数据
另外注意:单引号下$字符不需要转义字符,但是双引号下需要转义字符
11.创建一个索引mongodb支持索引,而且索引可以非常容易的加到集合中。
为了创建一个索引,你需要定义一个字段和方向:升序(1)或者降序(-1)。
以下创建了一个升序的索引在‘i’字段上:
database->collectionname();



$collection->ensureindex(array(i=>1));//创建一个在‘i’上升序的索引
$collection->ensureindex(array(i=>-1, j=>1));//创建一个在‘i’上降序,在‘j’上升序的索引。
?>










当数据增长时,索引就成了数据库良好的读取性能的关键。如果你对索引读取性能还不熟悉,你可以参考mongocollection::ensureindex()mongocollection::ensureindex()的相关文档。
参考:http://www.php.net/manual/zh/mongo.tutorial.connecting.php
其它类似信息

推荐信息