mongodb 说明:
1, mongodb 强调的是集合 collection 集合 就是平常所说的数据库表
2, 插入数据 就是创建集合的过程 就像 use mydb 就是创建数据库的过程
3, mongodb是一个介于关系数据库和NoSQL之间的产品,也是功能最丰富、最像关系数据库的的NoSQ
4, MongoDB使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,大幅度提升性能
数据库操作!
5,一款为web应用程序和互联网基础设施设计的数据库管理系统
6,MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表
7,MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力
8,MongoDB 采用的是 c/s 模型 客户机和服务器模式类型
9, mongodb 提供了很多性能监视工具,用于分析数据库操作的性能
10,mongodb 支持大型的二进制文件储存 可以将图片甚至是视频存储到内存之中
11,mongodb 支持 节点复制 可以从子节点复制主节点的数据 主节点数据可以立即同步到子节点
数据库操作!
# 产看当前的数据库名称
db;
#查看所有数据库(物理上存在的数据库!)
# 只有数据库之中有数据 才显示
show dbs;
show databases;
# 如果指定的数据库 mydb 不存在 就会创建数据库 mydb
use mydb
#删除当前指向的数据库,如果数据库不存在,则什么也不做
# 删除数据库的方式 是进入数据库 然后使用以下命令
# db 代表的是 mydb
db.dropDatabase()
collection 操作
# 查看当前数据库所有的集合
show collections
# 创建集合 sxu
# 如果不指定 _id 那么就会创建一个 _id 第二个参数 是为数据库设置限制 比如内存最大 6142800字节
db.createCollection("mycol", {capped : true, autoIndexId : true, size : 6142800, max : 10000 })
# 集合插入数据 集合不存在那么就会新建集合
db.sxu.insert({'name':'xiaoming','age':'12'})
# 查找sxu集合之中的所有数据!
db.sxu.find()
# 删除集合 sxu
db.sxu.drop()
集合数据操作:
'''
集合数据类型:
ObjectID:文档ID
String:字符串,最常用,必须是有效的UTF-8
Boolean:存储一个布尔值,true或false json的 Boolean
Integer:整数可以是32位或64位,这取决于服务器
Double:存储浮点值
Arrays:数组或列表,多个值存储到一个键
Object:用于嵌入式的文档,即一个值为一个文档 也就是字典
Null:存储Null值
Timestamp:时间戳,表示从1970-1-1到现在的总秒数
Date:存储当前日期或时间的UNIX时间格式
'''
#插入操作 没有指定 _id 就会创建一个 _id 是主键
db.sxu.insert({name:'gj',gender:1,datetime:Date('2017-12-20'),likes:['sleep','dreak']})
# 使用 save() 如果 _id 存在就会修改 不存在就会新增
# 如果使用 inser() 下面会报错 因为主键是唯一的
db.sxu.insert({'_id':'100',name:'xiaohong'})
db.sxu.save({'_id':'100',name:'xiaohong1'})
#更新集合 将 包含 name:xiaohong1 的 name:'xiaozhao'
# 这个操作是替换 也就意味着 原来的除了 name:xiaohong1 的 其他都会删除
db.sxu.update({name:'xiaohong1'},{name:'xiaozhao'})
# 这个操作 才是更新操作 保存其他的值
db.sxu.update({name:'xiaohong'},{$set:{name:'xiaozhao'}})
# 以上的更新只是更新一条 设置 multi:true 那么表示更新所有
db.sxu.update({name:'xiaozhao'},{$set:{name:'xiaozhao1'}},{multi:true})
#删除集合
# 设置 justOne:true 表示只删除一条
db.sxu.remove({name:'xiaozhao1'},{justOne:true})
# 不设置 justOne:true 表示只删除所有
db.sxu.remove({name:'xiaozhao1'})
mongodb 数据的备份与恢复:
1,恢复与备份是在终端命令操作的
# 数据备份
mongodump -h dbhost -d dbname -o dbdirectory
'''
-h:服务器地址,也可以指定端口号
-d:需要备份的数据库名称
-o:备份的数据存放位置,此目录中存放着备份出来的数据
'''
sudo mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak
# 数据的恢复
mongorestore -h dbhost -d dbname --dir dbdirectory
'''
-h:服务器地址
-d:需要恢复的数据库实例
--dir:备份数据所在位置
'''
mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1