mongodb 基本使用
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