PHP操作MongoDB
<?php error_reporting(7); $conn = new Mongo(); $db = $conn->PHPDataBase; $collection = $db->PHPCollection; /*----------------------------- * 删除 *----------------------------- $collection->remove(array("name" => "xixi111")); */ /*------------------------------ * 插入 *------------------------------ for($i = 0;$i <= 50;$i++) { $data = array("name" => "xixi".$i,"email" => "673048143_".$i."@qq.com","age" => $i*1+20); $collection->insert($data); } */ /*------------------------------- * 查找 *------------------------------- $res = $collection->find(array("age" => array('$gt' => 25,'$lt' => 40)),array("name" => true)); foreach($res as $v) { print_r($v); } */ /*------------------------------- * 更新 *------------------------------- $collection->update(array("age" =>22),array('$set' => array("name" => "demoxixi"))); */ ?>
完成MongoDB的安装
完成PHP对MongoDB的扩展,重启apache
开启MongoDB服务,就像mysql一样。
然后就可以用PHP操作MongoDB了。
下面是我自己今天学习的一些笔记:
首先要能对概念有个清晰的理解。
新闻的增删改查。
首先是新闻添加,新闻标题,新闻作者,新闻内容。
然后是新闻的读取。MongoDB中的数据读取出来,通过PHP读取。
这里面的界面都是用HTML语言写的,这个是一样的。
传统的关系数据库一般由数据库、表、记录三个层次组成。
MongoDB是由数据库、集合、文档三个层次组成。
MongoDB采用的是面向文档的数据模型使其可以自由在多台服务器之间分割数据。
它还可以平衡集群的数据和负载,自动重排文档。
支持:
索引
可以存储Javascript
文件存储
不支持:
join和复杂的多行事务
文档是MongoDB中数据的基本单元(类似于关系型数据库中的行)
类似的,集合可以被看做是没有模式的表。
多个键及其关联的值有序地放置在一起便是文档。
{"greeting":"Hello,world!"}
这个文档只有一个键"greeting",其对应的值为"Hello,world!"
{"greeting":"Hello,world!","foo":3}
MongoDB不但区分类型,而且区分大小写:
{"foo":3}
{"foo":"3"}
和
{"foo":3}
{"Foo":3}
都是不同的
还有一个非常重要的事项,MongoDB文档不能有重复的键。下面的文档时非法的:
{"greeting":"Hello,world!","greeting":"Hello,MongoDB"}
集合
集合就是一组文档。如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。
集合是无模式的,这意味着一个集合里面的文档可以是各式各样的。
例如下面的文档可以存在于同一个集合里:
{"greeting":"Hello,world!"}
{"foo":5}
把同种类型的文档放在一个集合里,这样数据会更加集中。
MongoDB中多个文档组成集合,同样多个集合可以组成数据库。
数据库名最终会变成文件系统里的文件。
CRUD
插入:
insert函数添加一个文档到集合里面。例子:db.blog.insert(post)。
读取:
find读取集合里的文档。例子:db.blog.find()。
若是想查看一个文档,可以用findOne。
更新:
update。update接受两个参数,第一个是要更新文档的限定条件,第二个是新的文档。
例子:db.blog.update({title:"My Blog Post"},post)
删除:
remove。它可以接受一个文档以指定限制条件。
db.blog.remove({title:"My Blog Post"})
MongoDB字段类型
null:
null用于表示空值或者不存在的字段。{"x":null}
布尔:
布尔类型有两个值'true'和'false':
{"x":true}
32位整数:
64位整数:
64位浮点数:shell中的数字都是这种类型。
{"x":3.14}
这也是一个浮点数
{"x":3}
字符串:
{"x":"foobar"}
符号:
对象id:
日期:
正则表达式:
{"x":/foobar/i}
代码:
{"x":function(){/*...*/}}
二进制数据:
最大值:
最小值:
未定义:
{"x":undefined}
数组:
{"x":["a","b","c"]}
内嵌文档:
{"x":{"foo":"bar"}}