在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
PHP 扩展mongon.mod.dll下载http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows
一、连接数据库 使用下面的代码创建一个数据库链接 复制代码 代码如下: <?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());//能打印出数据库数组,看看有几个数据库。 ?> 如图:
现在你可以使用$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字段总是一个对象而不是一个文档, 复制代码 代码如下: <?php
$m = new Mongo(); $collection = $m->foo->bar; $collection->insert($doc); ?> mongodb 的 insert()、save() ,区别主要是:若存在主键,insert() 不做操作,而save() 则更改原来的内容为新内容。 使用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 就是文档本身 为查询规定一个标准 复制代码 代码如下: <?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) 复制代码 代码如下: <?php
$coll->ensureIndex( array( “i” => 1 ) ); //在”i”上创建了一个索引 $coll->ensureIndex( array( “i” => -1, “j” => 1 ) );//在”i”上创建了倒序索引 在”j”上创建了正序索引 ?> 一个完整的简单例子 这个例子展示了如何链接mongodb数据库,如何选择数据库,如何插入数据,如何查询数据,以及关闭数据库链接 复制代码 代码如下: <?php //链接 $m = new Mongo(); // 选择一个数据库 //添加一个元素 //修改 //添加另一个元素,使用不同的格式 //查询所有的集合 //重复显示结果 // 关闭链接 输出结果为 复制代码 代码如下: Calvin and Hobbes XKCD |
请发表评论