一、索引

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管理练习的更多相关文章

  1. MongoDB管理工具的插件系统

    MongoDB管理工具  MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了. 最近准备着手插件系统的开发,简 ...

  2. MongoDB管理与开发精要 书摘

    摘自:<MongoDB管理与开发精要>         性能优化 创建索引 限定返回结果条数 只查询使用到的字段,而不查询所有字段 采用capped collection 采用Server ...

  3. mongodb管理工具rockmongo

    mongodb的图像管理工具非常之多,我用的是rockmongo. RockMongo 是一个PHP5写的MongoDB管理工具. 主要特征: 使用宽松的New BSD License协议 速度快,安 ...

  4. Nodejs mongodb 管理组件adminmongodb

    强大的 nodejs的mongodb管理工具,强大到即下即用: 安装需求: 1.git命令获取组件包,git clone https://github.com/mrvautin/adminMongo. ...

  5. 详解MongoDB管理命令

    MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一 ...

  6. MongoDB管理

    前几篇文章都是从开发和使用的角度了解了MongoDB的各个知识点,这篇文章将从MongoDB管理的角度入手,了解MongoDB管理所要了解的基本知识. 数据库命令 在前面几篇文章中,已经接触了一些数据 ...

  7. MongoDB.WebIDE:升级版的Mongodb管理工具

    很早以前收藏了一片文章:<强大的MongoDB数据库管理工具>.最近刚好要做一些MongoDB方面的工作,于是翻出来温习了一下,用起来也确实挺方便.不过在使用过程中出现了一些个问题,加上更 ...

  8. mongodb管理与安全认证

    mongodb数据管理 数据的导出.数据导入数据导出 mongoexport [使用mongoexport -h查看参数] 数据导入 mongoimport [使用mongoimport -h查看参数 ...

  9. MongoDB管理与开发实战详解文摘

    第1篇 基础篇 第1章 MongoDB简介 关系型数据库面临的问题:数据库并发负载高,海量数据存储与访问,数据库数据越来越大,事务管理的负担,关系型数据库读.写实时性的忽略,多表关联查询被弱化 第2章 ...

  10. mongodb进阶三之mongodb管理

    http://blog.csdn.net/stronglyh/article/details/46827141 平时的开发环境win比較多啊,但生产环境要放到unix环境上 一:命令 安装就不少了,网 ...

随机推荐

  1. 浅谈HTTPS连接

    相信很多朋友都遇到过网页被强插广告的情况,好端端一个干净的页面,动不动就被插了个屠龙宝刀点击就送的小窗口,看着就心烦.这种网页劫持强插广告的现象,在中国非常常见,往往是运营商进行HTTP劫持所造成的. ...

  2. Spark理论学习笔记(一)

    1.调度 分为FIFO和FAIR两种模式 创建调度池:sc.setLocalProperty("spark.scheduler.pool", "pool6") ...

  3. Hive 特性及原理

    特点:Hive是构建在hadoop之上的数据仓库.数据存储在hdfs上,数据计算用的mapreduce框架.用户无需掌握MR的编写,通过类SQL语句即可自动生成查询计划. 主要内容:     接入入口 ...

  4. bootstrap的学习注意点

    1.bootstrop里面所有的内容都需要用一个container 容器包裹起来: 2.一屏二屏什么的,是通过id 与href实现的: 3.下拉与菜单之类的都有固定的代码: 4.需要修改相关属性的话, ...

  5. bzoj4169: Lmc的游戏

    终于有道我会的了... int f[2][maxn],g[2][maxn],tot[maxn];//构造叶子编号时希望最大/小result 先手取子树最小/大的编号的排名 tot是子树中叶子个数 如果 ...

  6. HDU3416 Marriage Match IV —— 最短路径 + 最大流

    题目链接:https://vjudge.net/problem/HDU-3416 Marriage Match IV Time Limit: 2000/1000 MS (Java/Others)    ...

  7. Mother's Milk

    链接 分析:我们用vis[i][j][k]来记录A,B,C三个状态是否被访问过,同时用s[i]来记录C的所有可能值,当i==0时,如果j合法,则标记s[k]=1,最后统计所有为1的s即可 /* PRO ...

  8. web前端安全机制问题全解析

    摘要 web前端安全方面技术含有的东西较多,这里就来理一理web安全方面所涉及的一些问题 目录[-] 摘要 web前端安全方面技术含有的东西较多,这里就来理一理web安全方面所涉及的一些问题 web安 ...

  9. BZOJ3996 线性代数

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3996 转化题目给的条件 $$D = \sum_{i=1}^n \sum_{j=1}^n{A(i ...

  10. wxPython学习笔记1

    wxpython介绍: wxPython 是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的.功能键全的  GUI 用户界面. wxPython 是作为优 ...