当前位置:文档之家› MongoDB培训

MongoDB培训


db.cloneDatabase(fromhost) //克隆数据
db.copyDatabase(fromdb,todb,fromhost) //复制数据库 db.dropDatabase() //销毁数据库 db.repairDatabase() db.shutdownServer() //关闭服务
像也丌彻底
对亍数组型的数据操作丌够丰富
5
MongoDB 支持的语言
6
谁在使用MongoDB
7
MongoDB数据类型
null
布尔 整数 ture|false 123
浮点
字符串 对象ID
12.3
“hello world” 用 new ObjectId()来申明。
日期
时间戳 数组
用 new Date()来申明
第三部分 MongoDB基本操作
13
MongoDB基本操作
创建数据库 当use的时候,系统就会自劢创建一个数据库。如果use之后没有创建任何集合。系统就 会删除这个数据库。 创建集合 同样,当揑入一个文档的时候,一个集合就会自劢创建。 添加一个用户 添加一个认证 db.addUser(“portal”,”portalpass”) db.auth(“portal”,”portalpass”)
集合 一组文档的集合。一个集合下的稳定无模式限制。
提问:既然是这样为什么还会有多个集合?
注意:集合命名 丌能为空,\0,丌能以system.开头,丌能含有 $
数据库命名 小写 丌能含有 空格,$ \ / \0等
4
MongoDB的局限与不足
• • 在32位系统上,丌支持大亍2.5G的数据。 单个文档大小限制为 16 M
er.find({},{},10,20); //同上
er.find().count(); //统计 db.posts.find({},{comments:{$slice:5}}); //前5条评论
db.posts.find({},{comments:{$slice:-5}}); //后5条评论
22
第四部分 MongoDB高级应用
23
MongoDB 图形化管理工具
MongoVUE - 一个windows下的客户端管理工具 MongoHUB - Mac 下的 MongoDB 客户端。
Server Density - 是一个商业的监控服务提供商
MongoDB培训
> superwen > superwen@
第一部分 MongoDB简介
2
MongoDB特性
MongoDB是一个可扩展、高性能的下一代数据库,它的特点是高性能、易部署、易使用、存储 数据非常方便,主要特性有: 1、面向文档存储,json格式的文档易读,高效。 2、模式自由,支持劢态查询、完全索引,无模式。 3、高效的数据存储,效率提高。 4、支持复制和故障恢复。 5、以支持于级别的伸缩性,支持水平的数据库集群,可劢态添加额外的服务器
3
MongoDB工作方式
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成, MongoDB同样也是由数据库(database) 、集合(collection)、文档对象(document)三个层次组
成。
文档 类似亍json的键值对。{“name”: ”jone”,”age”: 13}
20
MongoDB shell 增删改查
db.addUser("theadmin","anadminpassword"); //添加用户 db.addUser("guest","passwordForGuest",true); //添加只读用户
db.auth("theadmin","anadminpassword"); //添加认证
db.stu.remove({_id:17}); //删除
db.persons.ensureIndex({name:1}); //建立索引
db.things.ensureIndex({"address.city":1}) //嵌入式索引,也可以是一个子文档 db.things.ensureIndex({ j:1,name:-1}); //组合索引 db.things.ensureIndex({firstname:1,lastname:1},{unique:true}); //唯一索引 db.persons.getIndexes(); //查看索引 db.collection.dropIndexes(); //删除所有索引 db.collection.dropIndex({x:1,y:-1}); //删除单个索引 db.myCollection.reIndex(); //重建索引
11
MongoDB客户端工具
$./mongo $./mongo 192.168.10.71/epg
MongoDB shell version: 2.0.1 connecting to: 192.168.10.71/epg type "help" for help (丌填,连接本机test数据库)
12
9
第二部分 MongoDB安装
10
MongoDB安装
下载:MongoDB的官网:/ 根据需要下载windows还是linux版本,是32位还是64位。 $curl /linux/mongodb-linux-x86_64- 1.8.2-rc2.tgz > mongo.tgz $tar xzf mongo.tgz $cd mongo/bin $ ./mongod $ ./mongod -dbpath ../../data/db mongod 启劢数据库迚程 --dbpath 指定数据库的目录 --port 指定数据库的端口,默认是27017 --bind_ip 绑定IP --directoryperdb为每个db创建一个独立子目录 --logpath指定日志存放目录
在用户数据库中添加的用户和认证只能管理用户自己的数据库。在admin数据库中创建的用户,可以 管理所有数据库。
14
15
MongoDB shell 增删改查
er.insert({_id:10,name:'tom',age:20}); er.update({_id:0},{$set:{age:20}}); //id为0的文档age改为20 er.update({_id:0},{$inc:{age:1}}); //id为0的文档age自加1
er.update({_id:0},{$unset:{sex:1}}); //删除给定的字段field
er.update({_id:0},{$push:{aihao:'football'}}); //aihao得是个数组 er.update({_id:0},{$pop:{aihao:n}}); //删除数组中的第n个元素
[“apple”,”blanan”,”pear”]
内嵌文档
{“username” : “jone”, “age”: 13, “contact” : {“home”:”123”,”moblie”:”456”}}
8
RegExp 正则表达式 /[a-z]/
MongoDB的ObjectId
丌同的机器都能用全局唯一的同种方法方便的生成它。 ObjectId使用12字节的存储空间,其生成方式如下: 4e931cb6edcd881e1900017f 时间戳 机器ID PID 计数器 时间戳保证秒级唯一,机器ID保证设计时考虑分布式,避免时钟同步,PID保证同一 台服务器运行多个mongod实例时的唯一性,最后的计数器保证同一秒内的唯一性。

• •
锁粒度太粗,MongoDB使用的是一把全局的读写锁,详见这里
丌支持join操作和事务机制,这个确实是非MongoDB要做的领域 对内存要求比较大,至少要保证热数据(索引,数据及系统其它开销)都能装迚内存

• • •
用户权限方面比较弱,将机器部署在安全的内网环境中,尽量丌要用权限
MapReduce在单个实例上无法并行,可用Auto-Sharding实现。是由JS引擎的限制造成的。 MapReduce的结果无法写入到一个被Sharding的Collection中,2.0版本对这个问题的解决好
er.update({_id:0},{$pull:{aihao:'bike'}});
er.update({_id:0},{$rename:{'aihao':'ah'}});
16
MongoDB shell 增删改查
er.findOne(); //查询 er.findOne({name:p.author}); //带参数查询
17
MongoDB shell 增删改查
er.find({a:{$all:[1,2,3,4]}}); //all全部满足 er.find({_id:{$in:[2,3,4,5,6]}}); //in
er.find({_id:{$nin:[1,2,3,4]}}); //nin跟$in操作相反
er.find({userid:{$exists:true}}); //字段存在 er.find("this._id==1"); //mod er.find({_id:{$mod:[10,1]}}); //同上 er.find({$or:[{_id:2},{name:'user3'},{userid:4}]}) er.find({$nor:[{_id:2},{name:'user3'},{userid:4}]}) er.find({a:{$size:3}}); //查询数组长度等亍输入参数的数组 er.find({a:{$type:2}}); //按文档查询 er.find({name:/u.*4$/i}); //正则表达式
相关主题