MongoDB管理练习
一、索引
1.插入10W条数据 文档内容为:{name:zs-i,age:1}
2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten]
> for(var i=0;i<100000;i++){
... db.person.insert({name:"zs"+i,age:i})
... }
WriteResult({ "nInserted" : 1 })
2.在属性name上创建索引
> db.person.ensureIndex({name:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
3.查看执行计划,观察使用索引和不使用索引的区别
建立索引前
> db.person.find({name:"zs"+10000}).explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 100000,
"nscanned" : 100000,
"nscannedObjectsAllPlans" : 100000,
"nscannedAllPlans" : 100000,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 781,
"nChunkSkips" : 0,
"millis" : 30,
"server" : "weekend01:27017",
"filterSet" : false
}
建索引后
> db.person.find({name:"zs"+10000}).explain()
{
"cursor" : "BtreeCursor name_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"name" : [
[
"zs10000",
"zs10000"
]
]
},
"server" : "weekend01:27017",
"filterSet" : false
}
> db.person.find({name:"zs"+10000}).hint({name:1}).explain()
{
"cursor" : "BtreeCursor name_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"name" : [
[
"zs10000",
"zs10000"
]
]
},
"server" : "weekend01:27017",
"filterSet" : false
}
二、备份与恢复
1.中断备份与恢复
a.备份数据库test中的student
[root@weekend01 ~]# mongoexport -d test -c student -o studnet.json
connected to: 127.0.0.1
exported 0 records
b.删除数据库test中的student
> db.student.drop()
true
c.恢复数据库test中的student
导入其他数据
[root@weekend01 ~]# mongoimport --db test --collection student --file studnet.json
connected to: 127.0.0.1
2016-06-07T18:02:18.612+0800 check 0 0
2016-06-07T18:02:18.612+0800 imported 0 objects
2.运行时备份与恢复、
a.备份数据库test
[root@weekend01 ~]# mongodump --host 127.0.0.1:27017 -d test -o /tmp
connected to: 127.0.0.1:27017
2016-06-07T18:04:27.161+0800 DATABASE: test to /tmp/test
2016-06-07T18:04:27.167+0800 test.system.indexes to /tmp/test/system.indexes.bson
2016-06-07T18:04:27.167+0800 2 documents
2016-06-07T18:04:27.167+0800 test.person to /tmp/test/person.bson
2016-06-07T18:04:27.482+0800 100000 documents
2016-06-07T18:04:27.482+0800 Metadata for test.person to /tmp/test/person.metadata.json
b.删除数据库test
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
c.恢复数据库test
[root@weekend01 ~]# mongorestore --host 127.0.0.1:27017 -d test -directoryperdb /tmp/test/
connected to: 127.0.0.1:27017
2016-06-07T18:06:22.060+0800 /tmp/test/person.bson
2016-06-07T18:06:22.060+0800 going into namespace [test.person]
100000 objects found
2016-06-07T18:06:23.253+0800 Creating index: { key: { _id: 1 }, name: "_id_", ns: "test.person" }
2016-06-07T18:06:23.297+0800 Creating index: { key: { name: 1 }, name: "name_1", ns: "test.person" }
主要算法及程序清单
a.插入10W条数据
for(var i=0;i<100000;i++){
db.person.insert({name:"zs"+i,age:i})
}
b.查询name为zs10000的数据
db.person.find({name:"zs"+10000}).explain() --看效果,此时没建name索引
c.建立索引
db.person.ensureIndex({name:1})
d.查询name为zs10000的数据
db.person.find({name:"zs"+10000}).explain()
db.person.find({name:"zs"+10000}).hint({name:1}).explain() --看效果,此时已建name索引
1.中断操作 -- 像冷备
a.把数据库test中的student导出 --备份
mongoexport -d test -c student -o d:/student.json
mongoexport --db test --collection student --out /root/student1.json
b.删除test数据库中的student
db.student.drop()
c.导入数据(中断其他操作) --恢复
mongoimport --db test --collection student --file /root/student.json
mongoimport -d test -c student --file d:/student.json
2.运行时备份 --像热备 整库备份
a.导出数据库
mongodump --host 127.0.0.1:27017 -d test -o /root
b.删除整个数据库
db.dropDatabase()
c.运行时恢复
mongorestore --host 127.0.0.1:27017 -d test -directoryperdb /tmp/test
疑难小结
本次实验重在考察对mongoDB的操作,类似上个实验,本次实验中难题没有,都是些基本的操作,只要在明白其理论基础上加上多敲多练多想就会有很大收获。看着再简单,不动手永远不知道自己会碰到什么状况,所以还是要多动手练习。
MongoDB管理练习的更多相关文章
- MongoDB管理工具的插件系统
MongoDB管理工具 MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了. 最近准备着手插件系统的开发,简 ...
- MongoDB管理与开发精要 书摘
摘自:<MongoDB管理与开发精要> 性能优化 创建索引 限定返回结果条数 只查询使用到的字段,而不查询所有字段 采用capped collection 采用Server ...
- mongodb管理工具rockmongo
mongodb的图像管理工具非常之多,我用的是rockmongo. RockMongo 是一个PHP5写的MongoDB管理工具. 主要特征: 使用宽松的New BSD License协议 速度快,安 ...
- Nodejs mongodb 管理组件adminmongodb
强大的 nodejs的mongodb管理工具,强大到即下即用: 安装需求: 1.git命令获取组件包,git clone https://github.com/mrvautin/adminMongo. ...
- 详解MongoDB管理命令
MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一 ...
- MongoDB管理
前几篇文章都是从开发和使用的角度了解了MongoDB的各个知识点,这篇文章将从MongoDB管理的角度入手,了解MongoDB管理所要了解的基本知识. 数据库命令 在前面几篇文章中,已经接触了一些数据 ...
- MongoDB.WebIDE:升级版的Mongodb管理工具
很早以前收藏了一片文章:<强大的MongoDB数据库管理工具>.最近刚好要做一些MongoDB方面的工作,于是翻出来温习了一下,用起来也确实挺方便.不过在使用过程中出现了一些个问题,加上更 ...
- mongodb管理与安全认证
mongodb数据管理 数据的导出.数据导入数据导出 mongoexport [使用mongoexport -h查看参数] 数据导入 mongoimport [使用mongoimport -h查看参数 ...
- MongoDB管理与开发实战详解文摘
第1篇 基础篇 第1章 MongoDB简介 关系型数据库面临的问题:数据库并发负载高,海量数据存储与访问,数据库数据越来越大,事务管理的负担,关系型数据库读.写实时性的忽略,多表关联查询被弱化 第2章 ...
- mongodb进阶三之mongodb管理
http://blog.csdn.net/stronglyh/article/details/46827141 平时的开发环境win比較多啊,但生产环境要放到unix环境上 一:命令 安装就不少了,网 ...
随机推荐
- IOS中调用系统拨打电话发送短信
一.调用打电话界面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat ...
- 修改STM32库函数中的晶振值
STM32F407的库文件中默认晶振值为25MHz,若外接晶振8MHz,则需修改以下几个地方: 1)修改HSE_VALUE的值 将#define HSE_VALUE ((uint32_t)250000 ...
- Eos的Wasm智能合约的局限性
官方只支持用C++写智能合约 用C++写智能合约门槛过高,会把许多开发者挡在门外,C++的复杂性也会让智能合约的设计变得困难. Wasm智能合约的效率并不是最优 由于C++最终也是编译成wasm字节码 ...
- 一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- oracle:数据库版本问题导致的bug
公司开发出来的系统,由于各现场oracle数据库版本有10.2.0.4.11.2.0.1.11.2.0.3.11.2.0.4: 进而会导致版本不一导致错误问题.下面列举2个: 1.wm_concat ...
- bzoj 4260 REBXOR —— Trie树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 用 Trie 树可以找出前缀异或的最大值和后缀异或的最大值,拼起来即可: 注意要先加入 ...
- ie7 ie8 使用border模拟圆
border-radius 属性ie8+才支持,ie7 ie8 下的圆角就可以使用border进行模拟:(移动端都支持) 我们平常使用border-style一般都是solid实线,其他常用的还有da ...
- USACO 奶牛排队
题目:给出一个只含有1,2,3的数字序列,问最少交换多少次才能将之变为递增数列. 解: 注意到只有1,2,3,我们只要将1,3交换到自己的应在位置上那么排序就已经完成了. 需要交换的有几种,记$a(x ...
- jqGrid 编辑完数据后能返回到当前位置的方法
jqGrid 是一个js的jquery组件,虽然不轻便,但功能还是蛮强大的,也比较方便使用.在数据加载后,经常需要对其中的记录进行编辑,修改完后再返回时需要看到修改后的数据,一般采取重新加载的方法re ...
- Codeforces404C【构造】
题意: 一个图有n个点,每一个点最多连接k条直线,给出多有起点到终点的距离,没有环,不能输出重边,输出所有有连接的单向边 思路: 就是简单想-不知道怎么说了,画个图,我们建边,那么距离是 i 就是连距 ...