MongoDB与PHP的添加、修改、查询、删除

1.连接数据库 php

使用下面的代码建立一个数据库连接
<?php
$connection = new Mongo(); //连接到 localhost:27017
$connection = new Mongo( "example.com" ); //连接到远程主机(默认端口)
$connection = new Mongo( "example.com:65432" ); //连接到远程主机的自定义的端口
?>

如今你可使用$connection连接来操做数据库了 mongodb

2.选择数据库 数据库

使用下面的代码来选择一个数据库
<?php
$db = $connection->dbname;
?>

这里的数据库并不必定是一个已经存在的数据库,若是所选择的数据库不存在,则会新建一个数据库,因此在选择数据库的时候,注意必定要填上正确的数据库名

若是拼写错误的话,颇有可能会新建一个数据库 数组


<?php
$db = $connection->mybiglongdbname;
//作一些事情
$db = $connection->mybiglongdbnme;
//如今会连上一个新的数据库
?>


3.获取一个集合 spa

获取一个集合跟选择数据库拥有相同的语法格式 code


<?php
$db = $connection->baz;//选择数据库
$collection = $db->foobar;//选择foobar集合
//或者使用更简洁的方式
$collection = $connection->baz->foobar;
?>


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″)
);
?>

注意:你能够嵌套数组与对象,对象与文档在mongodb中几乎是同样的,你可使用$doc调用一个文档或对象,可是info字段老是一个对象而不是一个文档,
本约束适用于全部文档
使用MongoCollection::insert()插入一个文档
<?php
$m = new Mongo();
$collection = $m->foo->bar;
$collection->insert($doc);
?>

使用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的文档,咱们可使用下列方法

咱们将打印以下数据
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);

//添加另外一个元素,使用不一样的格式
$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
相关文章
相关标签/搜索