一.安装(Linux平台)
1.下载MongoDB安装包
MongoDB官网:http://www.mongodb.org 下载相应的版本
2.解压压缩包
tar zxvf mongodb-linux-i686-1.8.0.tgz
最好给解压的文件夹改个名字,方便操作
mv mongodb-linux-i686-1.8.0 mongodb
3.安装准备
将mongodb移动到/usr/local/mongdb文件夹
mv mongodb /usr/local/mongodb
创建数据库文件夹(默认的数据库文件的位置是/data/db,启动时会自动创建)
mkdir /usr/local/mongodb/data
提示:mongoDB没有具体的安装过程,解压文件包后,可以直接使用,非常高效和方便
4.开机自启动
将mongodb启动项目加入rc.local保证mongodb在服务器开机时启动
echo"/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data" >> /etc/rc.local
5.启动mongodb
运行mongod命令
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --fork --logpath=/usr/local/mongodb/dblogs
--dbpath执行数据库存放路径(默认是/data/db)
--fork是以Daemon(进程)方式运行,
注意:如果指定--fork参数,必须指定--logpaht日志文件路径
注:启动命令常用参数选项说明
--dbpath 指定数据库的目录
--port 指定数据库的端口,默认是27017
--bind_ip 绑定IP
--directoryperdb为每个db创建一个独立子目录
--logpath指定日志存放目录
--logappend指定日志生成方式(追加/覆盖)
--pidfilepath 指定进程文件路径,如果不指定,将不产生进程文件
--keyFile 集群模式的关键标识
--journal 启用日志
--nssize 指定.ns 文件的大小,单位MB,默认是16M,最大是2GB
--maxConns 最大的并发连接数
--notablescan 不允许进行表扫描
--noprealloc 关闭数据文件的预分配功能
--fork 以后台Daemon形式运行服务
更多的参数选项利用mongod --help 进行查看
6.进入客户端操作
/usr/local/mongodb/bin/mongo (mongo命令)
MongoDB的安装也就完成了,就是这么简单。(默认进入的是test库)
7.退出shell控制台
Ctrl+c 或exit 回车
8.关闭服务
pkill mongod 杀死进程 或killall mongod
二.MongoDB体系
关系型数据库:
MySQL数据库(database)、表(table)、记录(rows) 三个层次概念组
非关系型数据库:
MongoDB 数据库(database)、集合(collection)、文档对象(document)三个层次概念组
三.常用命令
控制台中的基本操作命令
如果想查看当前连接在哪个数据库下面,可以直接输入db
查看用户列表db.system.users.find();
查看所有用户show users;
查看所有数据库show dbs;
查看所有集合show collections;
删除当前的数据库db.dropDatabase();
删除collection db.集合名.drop();
想知道mongodb支持哪些命令 ,可以直接输入help;
想知道当前数据库支持哪些方法:db.help();
想知道当前集合支持哪些方法:db.user.help(); user为集合名
更多命令可以用帮助命令获得
######################################################################
一.应用Mongodb (增删改查)
Capped Collection(固定集合)
GridFS(大文件上传下载)
1.添加 要记着_id这个主键,有大用处
insert与save都是添加,save是_id的字段相同的则更新,不相同都添加,而insert主键(_id)则添加失败
1)Insert 方法
db.c1.insert({name:"user100",age:30});
db.c1.insert({name:"user1"});
db.c1.insert({name:"user2"});
db.c1.insert({name:"user3"});
db.c1.find(); #查看
2).Save 方法
db.c1.save({name:"user4"});
db.c1.save({name:"user4"});
例:
db.c1.remove();
db.c1.insert({name:"user1",post:{tit:1,cnt:11111}}); # 添加json
db.c1.find();
db.c1.insert({name:"user2",post:[1,2,3,4,5]}); # 添加数组
db.c1.find();
2.删除
1).remove
例:
db.c1.remove(); # 这个就等同于 db.c1.remove({});
db.c1.find();
有条件的删除
db.c1.insert({name:"user1"});
db.c1.insert({name:"user2"});
db.c1.insert({name:"user3"});
db.c1.find();
db.c1.remove({name:"user1"}); # 删除name为user1的删除
3.查询
例:循环来添加数据(和js写法一致)
for(i=1;i<=10i++){
db.c1.insert({name:"user"+i});
}
db.c1.find();
//带条件的查询
db.c1.find({name:"user5"});
//只选择其中的几列
db.c1.find({name:"user5"},{name:1});
//不想要_id
db.c1.find({name:"user5"},{name:1,_id:0});
//总结:要的字段为1 不要的为0
--条件表达式
1). < <= > >=
for(i=1;i<=10i++){
db.c1.insert({name:"user"+i,age:i});
}
db.c1.find();
例:
//年龄大于5的
db.c1.find({age:{$gt:5}});
//年龄小于5的
db.c1.find({age:{$lt:5}});
//小于等于5的
db.c1.find({age:{$lte:5}});
//大于等于5的
db.c1.find({age:{$gt:5}});
//等于
db.c1.find({age:5});
//不等于5的
db.c1.find({age:{$ne:5}});
//统计
db.c1.find().count()或 db.c1.count();
//排序 负数:升序 正数:降序 以年龄来排序的
db.c1.find().sort({age:-1});
//取多少个 取几个 这里取3个
db.c1.find().limit(3);
//跳过多少个 跳过第5个,从第6个开始取5个
db.c1.find().skip(5).limit(5);
//从第8个开始取2个,以年龄降序排列
db.c1.find().sort({age:-1}).skip(7).limit(2);
//count里面有两个值,0和1 0:不看前面的条件,1:依前面的条件
db.c1.find().sort({age:-1}).skip(7).limit(2).count(0);
db.c1.find().sort({age:-1}).skip(7).limit(2).count(1);
2). $all 主要针对数组操作的
db.c2.insert({name:"user1",post:[1,2,3,4,5]);
db.c2.find();
//post中包含1,2,3元素的,有1个没有的,返回假,包含则显示
db.c2.find({post:{$all:[1,2,3]}});
3).$exists 判断一个字段是否存在
//有没有包含age字段的
db.c2.find({age:{$exists:1}});
4).$mod 取余
db.c1.find();
//与2取余得1的 类似 n%2=1的
db.c1.find({age:{$mod:[2,1]}});
5).$in 包含 包含的条件用数组格式
//年龄包含1,3,5的查询出来
db.c1.find({age:{$in:[1,3,5]}});
6).$nin 除了
db.c1.find({age:{$nin:[1,3,5]}});
7).$nor
8).$or
//查询名字是user2且年龄是2的人
db.c1.find({name:"user2",age:2});
//查询名字是user2或年龄是3的人
db.c1.find({$or:[{name:"user2"},{age:3}]});
//与$or相反
db.c1.find({$nor:[{name:"user2"},{age:3}]});
9).$size 查询数组长度
db.c2.insert({name:"user1",post:[1,2,3,4,5]);
db.c2.insert({name:"user2",post:[6,7,8,9]);
db.c2.insert({name:"user3",post:[10,11,12]);
db.c2.find();
例:
//查询字段值为数组中大小是3个的查询出来
db.c2.find({post:{$size:3}});
9).正则表达式
db.c1.find({name:"user"});
//正则匹配
db.c1.find({name:/user/i});
--注:
i:忽略大小写
m:超始符^,结束符$对于每一个新行都起作用
x:忽略空白字符
s:这个选项从1.9版本后才支持,加上它就可以让"."表示所有字符了,包括换行符.
例:
/a.*b/不匹配"apple\nbanana",但是/a.*b/s可以
10).distinct 去重
db.c1.distinct("name");
11).分页查询
//跳过前10条记录
db.c1.find().skip(10);
//第页返回8条记录
db.c1.find().limit(8);
//跳过前20条记录,并每页返回10条记录
db.c1.find().skip(20).limit(10);
db.c1.find({},{},10,20); 和上面一样的功能 条件,字段:1,条数,跳过数
12).$elemMatch 元素匹配
db.c3.insert({name:"user1",post:[{tit:1},{tit:2},{tit:3}]});
db.c3.insert({name:"user1",post:[{tit:"aa"},{tit:"bb"},{tit:"cc"}]});
db.c3.find();
//查找post中tit为2的
db.c3.find({"post.tit":2});
db.c3.find({post:{$elemMatch:{tit:2}}});
db.c3.find({post:{$elemMatch:{tit:"cc"}}});
13).cursors游标
var x=db.c1.find();
x.hasNext();
x.next()
14) NULL查询
db.c4.insert({name:"user1"});
db.c4.insert({name:"user2",age:null});
db.c4.insert({name:"user3",age:28});
db.c4.find({age:{$exists:1,$in:[null]}}); 或
db.c4.find({age:{$type:10}});
//不包含有age字段的
db.c4.find({age:{$exists:0}});
15). $slice 针对数组
db.c3.insert({name:"user1",post:[{tit:1},{tit:2},{tit:3}]});
db.c3.insert({name:"user1",post:[{tit:"aa"},{tit:"bb"},{tit:"cc"}]});
db.c3.find();
//第一个贴子
db.c3.find({name:"user1"},{post:{$slice:1}});
//前2个贴子
db.c3.find({name:"user1"},{post:{$slice:2}});
//前3个贴子
db.c3.find({name:"user1"},{post:{$slice:3}});
//后1个贴子
db.c3.find({name:"user1"},{post:{$slice:-1}});
//取多少个 跳过第1个从到第2个取2个
db.c3.find({name:"user1"},{post:{$slice:[1,2]}});
#################################################
4.修改,更新
1).语法 update
db.collection.update(condition,objnew,upsert,multi)
参数说明:
condition: 用于设置查询条件的对象
objnew: 用于设置更新内容的对象
upsert: 如果记录已经存在,更新它,否则新增一个记录 参数[0或1] 一般设置为:0
multi: 如果有多个符合条件的记录,全部更新 参数[0或1] 一般设置为:1
注:默认情况下,只会更新第一个符合条件的记录
db.c4.insert({name:"user1"});
db.c4.insert({name:"user2",age:null});
db.c4.insert({name:"user3",age:28});
例:
db.c4.update({name:"user2"},{age:"nan"},0,1);
a).$set
db.c1.insert({name:"user1"});
db.c1.insert({name:"user1"});
db.c1.insert({name:"user1"});
db.c1.insert({name:"user1"});
例:
db.c1.update({name:"user1"},{$set:{name:"user111"}},0,1);
//也可以添加字段
db.c1.update({name:"user111"},{$set:{age:10}},0,1);
b).$inc 递增递减
db.c5.insert({name:"user1",age:10});
db.c5.insert({name:"user2",age:10,score:1});
db.c5.insert({name:"user3",age:10,score:22});
db.c5.insert({name:"user4",age:10,score:123});
//给所有的人加10
//注:有这个字段则修改递增,字段不存在,则添加这个字段并赋上这个值
db.c5.update({},{$inc:{score:10}},0,1);
//减10
db.c5.update({name:"user4"},{$inc:{score:-10}},0,1);
c). $unset 删除字段 0与1 0为假 1为真
//删除所有积分字段
db.c5.update({},{$unset:{score:1}},0,1);
d). $push 与数组有关系的
db.c5.insert(name:"user1",arr:[1,2,3]);
//向arr最后压入一个值
db.c5.update({name:"user1"},{$push:{arr:4}},0,1);
d). $pop
//弹出去最后一个值
db.c5.update({name:"user1"},{$pop:{arr:1}},0,1);
//一次压入多个值
db.c5.update({name:"user1"},{$pushAll:{arr:[4,5,6]}},0,1);
e).$addToSet 压入,存在压入失败
db.c5.update({name:"user1"},{$addToSet:{arr:1}},0,1);
f). $each
//压入多个唯一值
db.c5.update({name:"user1"},{$addToSet:{arr:$each:[9,10]}},0,1);
g). $pull 针对数组
//删除arr中1的值
$db.c5.update({name:"user1"},{$pull:{arr:1}});
h). $pullAll 一次性删除多个值
$db.c5.update({name:"user1"},{$pullAll:{arr:[1,2,3]}});
i). $rename 修改字段的名字
$db.c5.update({name:"user1"},{$rename:{arr:"post"}});
$db.c5.find();
j). 特殊操作符:$
db.c5.insert({name:"user1"});
db.c5.update({name:"user1"},{$push:{arr:{tit:"linux"}}});
db.c5.update({name:"user1"},{$push:{arr:{tit:"php"}}});
//把tit中的php中插入cnt字段为this is php
db.c5.update({"arr.tit":"php"},{$set:{"arr.$.cnt":"this is php"}});
#######################################################################
//删除集合
db.c1.drop();
//查看集合
show tables;
//删除数据库
db.dropDatabase();
//创建一个集合 人为显示的创建的一个集合
db.createCollection("c1");
show tables;
db.c1.find();
db.c1.drop();
//查看状态
db.c1.stats();
######################################################33
Capped Collection固定集合
功能特点:
可以插入及更新,但更新不能超出collection的大小,否则更新失败,不允许删除,但是可以调用drop()删除集合中的所有行,但是drop()后需要显式地重建集合.在32位机上一个固定集合最大值约482.5M,64位机上受系统文件大小的限制.
好处:
1.插入速度极快.
2.按照插入顺序的查询输出速度极快
3.能够在插入最新数据时,淘汰最早的数据
用途:
1.存储日志信息
2.缓存一些少量的文档
1.创建固定集合
//大小为10K,可以建5个json对象
db.createCollection("c2",{capped:true,size:10000,max:5});
//查看状态
db.c2.stats();
db.c2.insert(name:"user1");
db.c2.insert(name:"user2");
db.c2.insert(name:"user3");
db.c2.insert(name:"user4");
db.c2.insert(name:"user5");
2.转换集合
把普通集合转换成固定集合
//把c1普通集合转换成固定集合大小为10M,存储3个json对象
db.runCommand({convertTocapped:"c1",size:100000000,max:3});
####################################################################
GridFS文件系统
GridFS是一种在Mongodb中存储大二进制文件的机制.使用GridFS原因有以下几种:
1).存储巨大的文件,比如视频,高清图片等.
2).利用GridFS可以简化需求.
3).GridFS会直接利用已经建立的复制或分片机制,故障恢复和扩展都很容
4).GridFS可以避免用户上传内容的文件系统出现问题
5).GridFS不产生磁盘碎片
GridFS使用两个表来存储数据:
GridFS存储将包括命名空间:fs.files和fs.chunks 默认前缀为fs
使用:
进入 /usr/local/mongodb/bin下
./mongofiles -h 看看支持的参数
./mongofiles list
//上传一个文件: put
./mongofiles put abc.tar.gz
这里进入mongod中就是看了fs.files和fs.chunks
db.fs.files.find();
./mongofiles list
//下载 get
./mongofiles get abc.tar.gz
//删除
./mongofiles delete abc.tar.gz
./mongofiles list
//linux的命令
查看md5值:md5sum abc.tar.gz
##################################################################
性能篇
1.索引管理
2.性能优化
3.性能监控
--- 索引
1.建立索引(普通索引) ensureIndex() 1:升序,-1:降序
后台建立索引只需要指定 background:true就可以了
for(i=1;i<=10;i++){
db.c1.insert({name:"user"+i,age:i});
}
db.c1.find();
//解析查询语句 explain()
db.c1.find({name:"user5"}).explain();
//增加索引
db.c1.ensureIndex({name:1});
//在后台添加索引
db.c1.ensureIndex({name:1},{background:true});
//查看索引清单
db.c1.getIndexKeys();
db.c1.find({name:"user5"}).explain();
2.唯一索引
只需要指定unique:true就可以了
//年龄建立唯一索引
db.c1.ensureIndex({age:1},{unique:true});
3.删除索引
//删除age字段的索引
db.c1.dropIndex({age:1});
//删除c1集合的全部索引,除_id以外
db.c1.dropIndexes();
--- 性能优化
1.profile 优化器
是一种慢查询日志功能,可以作为我们优化数据库的依据
开启Profiling功能
级别:
0 不开启
1 记录慢命令(默认为>100ms)
a.通过启动时添加--slowms启动参数配置
b.db.setProfilingLevel时加上第二个参数
2 记录所有命令
有两种 方式可以控制Profiling的开关和级别
启动MongoDB时加上 --profile=级别即可 [0,1,2]
在客户端调用db.setProfilingLevel(级别)命令来实时配置
Profiler信息保存在system.profile中,我们可以通过db.getProfilingLevel()命令来获取当前的Profile级别
//查看
db.getProfilingLevel();
//开启
db.setProfilingLevel(1);
//超过1秒的记录下来 不一定成功,最好在启动时加参数修改
db.setProfilingLevel(1,1000);
//启动时开启和修改慢查询
./mongod --profile=1 --slowms=1000
---- 性能临控
1. mongosniff //记录通讯记录
//查看网络通讯
mongosniff --source net lo
2. mongostat
./mongostat
#########################################################
---管理篇
1.数据导出,数据导入
2.数据备份,数据恢复
3.用户安全与认证
--- 数据导出 ./mongoexport
参数说明:
-d 指明使用的库
-c 指明要导出的表
-o 指明要导出的文件名 c1.dat等
默认导出方工使用的是json的样式
--导出csv格式的文件
./mongoexport -d test -c c1 --csv -f name,age -o c1_csv.dat
参数说明:
--csv 指明要导出的csv格式
-f 指明需要财出的哪些列
./mongoexport -h 查看帮助
// -d 数据库 -c 集合名 -o 导出数据路径和名称
./mongoexport -d test -c c1 -o /tmp/c1.out
进入到mongo中
db.c1.remove(); //删除c1集合中的数据
db.c1.find();
exit
--- 数据导入 ./mongoimport
// -d 数据库 -c 集合名 文件
./mongoimport -d test -c c1 /tmp/c1.out
--导入csv格式的文件
./mongoimport -d test -c c1 --type csv --headerline --file c1_csv.dat
参数说明:
--type 指明要导入的文件格式
--headerline 指明不导入第一行,因为第一行是列名
--file 指明要导入的文件路径
----- 数据备份,数据恢复
数据备份: mongodump
数据恢复: mongorestore
-- 数据备份 mongodump
-d 指明数据库名
-o 指明备份的文件路径
-c 可以指明备份的集合
//备份test数据库
./mongodump -d test -o /tmp/test.bak
-- 数据恢复 mongorestore
如需验证可先删除test库,或指明--drop参数,就可以在恢复的时候先删除然后再向里插入数据
./mongorestore -d test /tmp/test.bak
----- 用户安全与认证 (用户授权)
1.先关闭mongod
pkill mongod
2.在启动mongod 加入 --auth
/usr/local/mongodb/bin/mongod --auth --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/dblogs --fork
3../mongo中
use admin中
//用户名:root 密码:123
db.addUser("root","123"); -- 超级管理员
这样设置后就算成了
-----
//验证必须进入admin数据库验证后在use test去操作
./mongo -uroot -p123 localhost:27017/admin
这个用户登陆进去后,可以看任务数据,它是超级管理员
//在test数据库也添加用户名和密码
use test
db.addUser("user1","123"); -- 普通管理员 只能看本数据库
//可以用这个来测试验证
db.auth("user1","123");
//查看用户
db.system.users.find();
####################################################################
架构篇
1.主从复制
2.副本集
--- 主从复制 Mongodb的主从集群分为两种:
Master-Slave 复制(主从)
Replica Sets 复制(副本集)
Master-Slave 复制(主从)
只需要在某一个服务启动时加上--master参数,而另一个服务加上--slave与--source参数,即可实现同步.
注:最新版本的已经不推荐使用这种方法了
例: 暂不设置验证了
A服务器
pkill mongod
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data1 --logpath=/usr/local/mongodb/dblog1 --fork --port 20001
./mongo --port 20001
db.c1.insert({name:"user1"});
db.c1.find();
B服务器 ****只能查询 不可添加和修改
/usr/local/mongodb/bin/mongod --slave --source 127.0.0.1:20001 --dbpath=/usr/local/mongodb/data2 --logpath=/usr/local/mongodb/dblog2 --fork --port 20002
./mongo --port 20002
db.c1.find();
** 备份可以在从服务器上进行
./mongodump --port 20002 -d test 这样也就可以在mongodb目录下生成一个dump和对应的库名一致的目录(test)
Replica Sets 复制(副本集)
mkdir data1
mkdir data2
mkdir log
touch log/log1
touch log/log2
mkdir key
touch key/key1
touch key/key2
echo "123456" > key/key1
echo "123456" > key/key2
//注:一定要设置成600
chmod 600 key/key1
chmod 600 key/key2
--replSet 副本集名(自定义)
A服务器
/usr/local/mongodb/bin/mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key1 --port 20001 --dbpath=/usr/local/mongodb/data/data1 --logpath=/usr/local/mongodb/log/log1 --fork
/usr/local/mongodb/bin/mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key2 --port 20002 --dbpath=/usr/local/mongodb/data/data2 --logpath=/usr/local/mongodb/log/log2 --fork
./mongo --port 20001
config_rs1={
_id:"rs1",
members:[
{_id:0,host:"localhost:20001",priority:1},
{_id:1,host:"localhost:20002",priority:2}
]
}
rs.initiate(config_rs1); //初始化
-----------------------------------------------------
这样等小会就可以了
然后在从服务器中要打上****************
*** rs.slaveOk();
命令,就可以查看了 ,从服务器的终端提示为
SECONDARY>
主服务器终端提示为
PRIMARY>
//查看副本集的状态
rs.status();
##############################################################
PHP支持mongodb扩展
1.下载
http://pecl.php.net/package/mongo
2.解压
tar zxf mongo-1.4.5.tgz
cd mongo-1.4.5
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-mongo
make && make install
vi php.ini
添加
extension=mongo.so
重启apache就生效了 就可以用php来增删改查mongodb数据库了
----启动Mongo服务器
pkill mongod
/usr/local/mongodb/bin/mongod --auth --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/dblog --fork
./mongo
use admin
db.addUser("root","123");
exit
./mongo -uroot -p123 localhost:27017/admin
use test
db.addUser("user1","123");
db.system.users.find(); 到这里服务器端完成了
---php文件
<?php
$conn = new Mongo();
#连接localhost:27017
$conn = new Mongo('localhost:27017');
#连接localhost:27017 有用户名密码并指定数据库blog
$conn = new Mongo("mongodb://${username}:${password}@localhost:27017/blog");
?>
例:
<?php
$conn = new Mongo("mongodb://user1:123@locahost:27017/test");
$db = $conn->test; //取名称为 "test" 的数据库
?>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.连接
1 <?php 2 $conn = new Mongo("mongodb://user1:123@locahost:27017/test"); 3 //$conn->connected; 4 $db = $conn->test; # 取名称为 "test" 的数据库 5 ?>
2.查看
1 <?php 2 include './conn.php'; 3 $c1 = $db->c1; //到c1集合 4 //db.c1.find({name:"user1"}); 5 //{name:"user1"} == array("name"=>"user1"); 6 //[1,2] == array(1,2); 7 8 /* 9 $arr = array(); //类似{}全取出来 10 $res = $c1->find($arr); 11 foreach($res as $v){ 12 $oid = $v['_id']; 13 echo '<pre>'; 14 print_r($v); 15 } 16 */ 17 18 #$arr = array("name"=>"user1"); 19 $arr = array(); 20 $res = $c1->find($arr); 21 foreach($res as $v){ 22 $oid = $v['_id']; 23 echo "<a href='user.php?oid'=$oid>".$v['name']."</a><hr />"; 24 #echo '<pre>'; 25 #print_r($v); 26 } 27 ?>
3.详细
1 <?php 2 include './conn.php'; 3 $c1 = $db->c1; 4 5 $oid = new MongoId($_GET['oid']); 6 7 $arr = array("_id"=>$oid); 8 $res = $c1->find($arr); 9 foreach($res as $v){ 10 echo '<pre>'; 11 print_r($v); 12 } 13 ?>
4.添加
1 <?php 2 include './conn.php'; 3 $c1 = $db->c1; 4 //db.c1.insert({name:"user2",age:30,sex:"nan"}); 5 $arr = array("name"=>"user2","age"=>30,"sex"=>"nan"); 6 if($c1->insert($arr)){ 7 echo "<script> 8 location.href='find.php'; 9 </script>"; 10 }else{ 11 echo '失败!'; 12 } 13 ?>
5.修改
1 <?php 2 include './conn.php'; 3 $c1 = $db->c1; 4 //db.c1.update({name:"user1"},{$set:{age:300}}); 5 6 $arr1 = array('name'=>'user1'); 7 $arr2 = array('$set'=>array('age'=>30)); 8 $opts = array('upsert'=>0,'multiple'=>1) 9 10 if($c1->update($arr1,$arr2,$opts)){ 11 echo "<script> 12 location.href='find.php'; 13 </script>"; 14 }else{ 15 echo '更改失败!!'; 16 } 17 ?>
6.删除
1 <?php 2 include './conn.php'; 3 $c1 = $db->c1; 4 //db.c1.remove({name:"user2"}); 5 6 $arr = array("name"=>"user2"); 7 if($c1->remove($arr)){ 8 echo "<script> 9 location.href='find.php'; 10 </script>"; 11 }else{ 12 echo "删除失败!!"; 13 } 14 ?>