漂定

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一.安装(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 ?>

 

posted on 2013-12-15 20:10  漂定  阅读(434)  评论(0编辑  收藏  举报