Mongodb
一、简介
关系型数据库:e-r图,实体和实体之间存在1:1或者1:n或者n:m的关系
mysql orcale sqlserver access...
缺点:1)存储在硬盘上 读写慢 2)保持ACID 难扩展
非关系型数据库:NoSql(not only sql)
key:value
cap原则 -> BASE 分布式
cap原则只能两者取其二
1)一致性 : 所有的节点在同一时间有相同的数据
2)可用性 : 请求不论失败还是成功都有响应
3)分隔容忍 : 信息的丢失或失败不影响系统的继续运作
缺点:
1)没有标准化
2)有限的查询功能
二、mongoDB
1.1 概述
1)非关系型数据库
2)文档存储:类json格式
3)有机会对字段建立索引,实现关系数据库
1.2 使用
1)运行mongo服务器
mongod -dbpath xxx
2) 连接MongoDB
mongo
3) 查看当前数据库
show dbs
4) 切换数据库
use demo2
5) 在数据库中插入一条数据
db.demo2.insert({"name":"lisa"})
6)删除数据库
use demo2
db.dropDatabase()
show dbs
1.2 集合
1)创建集合
db.createCollection('collection1')
2) 查看已经创建的集合
show collections
3) 删除集合
db.collection1.drop()
4) 插入和查看
插入文档时,mongodb自动创建集合
db.collectionDemo.insert({"name":"hello"})
查看插入的内容
db.collectionDemo.find().pretty()
5) 插入复杂文档
document = ({
title:'MongoDB',
by:'RuotongYu',
tags:['mongodb','database','NoSQL'],
});
db.collectionDemo.insert(document)
db.collectionDemo.find().pretty()
6) 修改文档
db.collection.update( # 替换的是整条数据
<query>,
<update>,
{
upsert:<boolean>, # 如果不存在update记录,是否插入,默认否
multi:<boolean>, # 把按条件查出来多条记录全部更新,默认否
writeConcern:<document> # 抛出异常的级别
}
)
例子:
db.col.update({'title':'MongoDB'},
{'title':'MongoDB123'})
修改多个文档
db.col.update({'name':'MongoDB'},
{$set{'title':'MongoDB123'}},
{multi:true})
7) 删除文档
删除多个
db.col.remove({'name':'hello123'})
删除一个文档
db.col.remove({'name':'hello'},1)
8) 修改操作符
用法:{$inc:{field:value}}
作用:对一个数字字段的某个field增加value
示例:将name为xiaohong的学生的age增加5
db.students.update({name:"xiaohong"},{$inc{age:5}})
追加:{$push:{field,value}}
作用:把value追加到field中
示例:给chenzhou添加别名michael
db.students.update({name:"chenzhou"},{$push:{"ailas":"Michael"}})
重命名:{$rename:{old_field_name:new_field_name}}
作用:对字段进行重命名
示例:把xiaohong记录的name字段重命名为hello
db.student.update({name:"xiaohong"},{$rename:{"name":"name2"}})