当前位置: 首页 > 编程笔记 >

PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例

钮兴安
2023-03-14
本文向大家介绍PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例,包括了PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例的使用技巧和注意事项,需要的朋友参考一下

PHP 扩展mongon.mod.dll下载http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows
然后php.ini添加 extension=php_mongo.dll
最后phpinfo() 查找到


表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器)

一、连接数据库

使用下面的代码创建一个数据库链接

<?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());//能打印出数据库数组,看看有几个数据库。

?>

如图:


上图说有一个数据库名字叫local,总大小1个字节,他是空的。看见ok表示运行成功。

现在你可以使用$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字段总是一个对象而不是一个文档,
本约束适用于所有文档
使用MongoCollection::insert()插入一个文档

<?php

$m = new Mongo();

$collection = $m->foo->bar;

$collection->insert($doc);

?>

mongodb 的 insert()、save()  ,区别主要是:若存在主键,insert()  不做操作,而save() 则更改原来的内容为新内容。
存在数据:  { _id : 1, " name " : " n1 " }
insert({ _id : 1, " name " : " n2 " })    会提示错误
save({ _id : 1, " name " : " n2 " })     会把 n1 改为  n2  。

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

<?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)
下面的代码为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);

//修改 $newdata = array('$set' => array("title" => "Calvin and Hobbes")); $collection->update(array("author" => "caleng"), $newdata); //删除 $collection->remove(array('author'=>'caleng'), array("justOne" => true));

//添加另一个元素,使用不同的格式 $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

 类似资料:
  • 本文向大家介绍PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子,包括了PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子的使用技巧和注意事项,需要的朋友参考一下 Medoo介绍 Medoo是一款超轻量级的PHP SQL数据库框架,由社交网站Catfan和开源项目Qatrix的创始人黎言卓开发。提供了简单,易学,灵活的API,提升开发Web应用的效率与性能,而且体积只有8KB不

  • 本文向大家介绍MongoDB简单操作示例【连接、增删改查等】,包括了MongoDB简单操作示例【连接、增删改查等】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MongoDB简单操作。分享给大家供大家参考,具体如下: MongoDB 中默认的数据库为 test,连接后尝试以下操作 连接 插入数据:用过json的同学看到这格式相信不会陌生吧! 查: 修改: 再查: 删除: 再查: 经过上面

  • 本文向大家介绍PHP连接数据库实现注册页面的增删改查操作,包括了PHP连接数据库实现注册页面的增删改查操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了PHP连接数据库实现注册页面的增删改查操作的方法,供大家参考,具体内容如下 1.连接数据库 2.注册页面(html页面) 3.将注册数据显示在数据库 4.返回后台界面 5.修改数据 6.删除数据 以上就是本文的全部内容,希望对大家的

  • 本文向大家介绍java jdbc连接mysql数据库实现增删改查操作,包括了java jdbc连接mysql数据库实现增删改查操作的使用技巧和注意事项,需要的朋友参考一下 jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比

  • 本文向大家介绍Yii2.0框架模型添加/修改/删除数据操作示例,包括了Yii2.0框架模型添加/修改/删除数据操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii2.0框架模型添加/修改/删除数据操作。分享给大家供大家参考,具体如下: 添加数据 修改数据 删除数据 更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《s

  • 本文向大家介绍Python中的MongoDB基本操作:连接、查询实例,包括了Python中的MongoDB基本操作:连接、查询实例的使用技巧和注意事项,需要的朋友参考一下 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便。 MongoDB 简单使用 联接数据库 Connectio