来源:http://blog.sina.com.cn/s/blog_966e430001019s8z.html

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

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

注意补充:mongodb数据类型控制的很严格,比如字符串的1 和整型的1 在查找时,只能匹配到对应的数据

转载于:https://www.cnblogs.com/hasayaki/archive/2013/01/22/2871479.html

MongoDB与PHP的添加、修改、查询、删除相关推荐

  1. DNS添加/修改/查询/删除A记录

    #查询DNS可用类 Get-WmiObject -Namespace root\MicrosoftDNS -List #查询所有资源记录 $mydns = [WMIClass]"ROOT\M ...

  2. 给jqGrid数据行添加修改和删除操作链接

    我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$("#list1").navGrid("#pager1&qu ...

  3. html表格中添加修改和删除链接,jQuery实现为table表格动态添加或删除tr功能示例...

    本文实例讲述了jQuery实现为table表格动态添加或删除tr功能.分享给大家供大家参考,具体如下: HTML页面元素如下: 订单合同号 捆包号 品名 规格 材质 重量 业务需求是,从后台获取到订单 ...

  4. 删除添加修改查询c语言报告,c语言课程设计报告 车辆违章查询系统.pdf

    c语言课程设计报告 车辆违章查询系统 C 语言课程设计 姓 名:刘 风 学 号:8100612 时 间:2011/6/11 指导教师:王 薇 C 语言课程设计 题目:车辆违章查询系统 要求: 能够根据 ...

  5. Entity Framework Code First添加修改及删除单独实体

    对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...

  6. oracle 添加,修改,删除表字段以及备注和重命名表,重命名列

    语法 添加字段:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段:alter ta ...

  7. ShopEx customSchema 定制可以根据客户的需求对网站进行相应功能的添加修改或者删除

    站内锚文本制作 1.修改config.php,在文件末尾加入以下内容 define('CUSTOM_CORE_DIR',BASE_DIR . '/custom'); 2.增加custom文件夹(与co ...

  8. 《Python编程从入门到实践》记录之第3章 列表简介总结——列表添加修改和删除元素(思维导图)

  9. 修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除

    #Java#Spring#SpringBoot#Mongo#reactor#webflux#数据库#新增#修改#查询#删除# Spring Boot WebFlux Mongo数据库新增.删除.查询. ...

  10. oracle删除查询的数据库语句,Oracle简略的语句 查询 删除 修改(1)

    Oracle简单的语句 查询 删除 修改(1) Dual系统表介绍 数据类型: 数据是信息数字表现形式,信息的加工处理是以大量的结构化数据为载体进行的,数据库管理系统的核心是数据库,数据库的主要对象是 ...

最新文章

  1. 使用树形结构保存实体
  2. 成都郫县php开发学校_成都各区九年制学校、十二年制学校汇总
  3. SSM中使用Druid连接池
  4. 如何判断一个字符串的编码类型?
  5. 清华计算机考研笔记,[考研天地]清华计算机,电子,自动化全套考研资料
  6. [译]ABP vNext介绍
  7. python flask html模板,python flask web开发实战 Jinja2模板
  8. linux上p图工具,linux图片处理工具GraphicsMagick安装使用
  9. mysql json字符串_mysql如何截取一个json字符串?
  10. Vmware之锁定文件失败
  11. R语言各个包里面的数据集
  12. 1、金融企业信息化建设的必要性
  13. 图像质量评估算法SSIM(结构相似性)
  14. (2020全新)UGNX二次开发(零基础入门)到提高全套视频教程_NXopen-UG二次开发_新浪博客
  15. Scratch3.0 桌面版下载安装使用
  16. 控制器c语言编程,如何用C语言对DMA控制器编程 - 全文
  17. 电脑播放视频显示运行服务器失败,电脑不能播放视频如何解决?
  18. pandas 随机抽样
  19. CSS实现div竖向排版
  20. 字符串使用split()方法截取时的空字符串问题

热门文章

  1. 网站排名在首位后,为什么还要继续做SEO?
  2. python动态时钟代码_Python基础 用Python实现时钟
  3. Retrofit2.0 请求数据 一直出返回网络错误,错误代码 414
  4. Fast Flux技术——本质就是跳板,控制多个机器,同一域名指向极多的IP(TTL修改为0),以逃避追踪...
  5. 兼容ie9以下css3,hover和圆角(htc)
  6. Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略
  7. git merge合并时遇上refusing to merge unrelated histories的解决方案
  8. 2017-2018-1 20155202 《信息安全系统设计基础》第10周学习总结
  9. Shell脚本之反引号【``】和 $()
  10. 005zabbix3.0报错记录