没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
mongodb
memcached
redis kv 数据库(key/value)
mongodb 文档数据库,存储的是文档(Bson->json 的二进制化).
特点:内部执行引擎为 JS 解释器, 把文档存储成 bson 结构,在查询时,转换为 JS 对象,并可以通
过熟悉的 js 语法来操作.
mongo 和传统型数据库相比,最大的不同:
传统型数据库: 结构化数据, 定好了表结构后,每一行的内容,必是符合表结构的,就是说--列的
个数,类型都一样.
mongo 文档型数据库: 表下的每篇文档,都可以有自己独特的结构(json 对象都可以有自己独
特的属性和值)
思路: 如果有电影, 影评, 影评的回复, 回复的打分
在传统型数据库中, 至少要 4 张表, 关联度非常复杂.
在文档数据库中,通过 1 篇文档,即可完成. 体现出文档型数据库的反范式化.
{
fiim:’天龙八部’
comment:[
{content:’王家卫的电影风格’,
reply:[‘支持’,’好’]
}
]
}
mongodb 的安装
1: 下载 mongodb www.mongodb.org 下载最新的 stable 版
2: 解压文件
3: 不用编译,本身就是编译后的二进制可执行文件.
4: 启动 mongod 服务
./bin/mongod --dbpath /path/to/database --logpath /path/to/log --fork --port 27017
参数解释:
--dbpath 数据存储目录
--logpath 日志存储目录
--port 运行端口(默认 27017)
--fork 后台进程运行
5: mongodb 非常的占磁盘空间, 刚启动后要占 3-4G 左右,
如果你用虚拟机练习,可能空间不够,导致无法启动.
可以用 --smallfiles 选项来启动,
将会占用较小空间 400M 左右.
1: mongo 入门命令
1.1: show dbs 查看当前的数据库
1.2 use databaseName 选库
1.2 show tables/collections 查看当前库下的 collection
1.3 如何创建库?
Mongodb 的库是隐式创建,你可以 use 一个不存在的库
然后在该库下创建 collection,即可创建库
1.4 db.createCollection(‘collectionName’)
创建 collection
1.5 collection 允许隐式创建
Db.collectionName.insert(document);
1.6 db.collectionName.drop() ,
删除 collection
1.7 db.dropDatabase();
删除 database
基本操作增删改查
增: insert
介绍: mongodb 存储的是文档,. 文档是 json 格式的对象.
语法: db.collectionName.isnert(document);
1: 增加单篇文档
Db.collectionName.insert({title:’nice day’});
2: 增加单个文档,并指定_id
Db.collectionName.insert({_id:8,age:78,name:’lisi’});
3. 增加多个文档
db.collectionName.insert(
[
{time:'friday',study:'mongodb'},
{_id:9,gender:'male',name:'QQ'}
]
)
删:remove
语法: db.collection.remove(查询表达式, 选项);
选项是指 {justOne:true/false},是否只删一行, 默认为 false
注意
1: 查询表达式依然是个 json 对象
2: 查询表达式匹配的行,将被删掉.
3: 如果不写查询表达式,collections 中的所有文档将被删掉.
例 1: db.stu.remove({sn:’001’});
删除 stu 表中 sn 属性值为’001’的文档
例 2: db.stu.remove({gender:’m’,true});
删除 stu 表中 gender 属性为 m 的文档,只删除 1 行.
改 update 操作
改谁? --- 查询表达式
改成什么样? -- 新值 或 赋值表达式
操作选项 ----- 可选参数
语法: db.collection.update(查询表达式,新值,选项);
例:
db.news.update({name:'QQ'},{name:'MSN'});
是指选中 news 表中,name 值为 QQ 的文档,并把其文档值改为{name:’MSN’},
结果: 文档中的其他列也不见了,改后只有_id 和 name 列了.
即--新文档直接替换了旧文档,而不是修改
如果是想修改文档的某列,可以用$set 关键字
db.collectionName.update(query,{$set:{name:’QQ’}})
修改时的赋值表达式
$set 修改某列的值
$unset 删除某个列
$rename 重命名某个列
$inc 增长某个列
$setOnInsert 当 upsert 为 true 时,并且发生了 insert 操作时,可以补充的字段.
Option 的作用:
{upsert:true/false,multi:true/false}
Upsert---是指没有匹配的行,则直接插入该行.(和 mysql 中的 replace 一样)
例子: db.user.insert({name:'wukong',jinku:true, sex:'m', age:500}) //插入一条数据
//修改一条数据
db.user.update(
{name:'wukong'},
{
$set:{name:'dzsf'},
$unset:{jinku:1},
$rename:{sex:'gender'},
$inc:{age:16}
})
例:db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true});
如果有 name=’wuyong’的文档,将被修改
如果没有,将添加此新文档
例:
db.news.update({_id:99},{x:123,y:234},{upsert:true});
剩余36页未读,继续阅读
资源评论
@孙星
- 粉丝: 0
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功