最近在折腾mongodb和nodejs,在imooc上找了一个mongodb的入门教程,跟着里面一步一步的走,下面记录下我操作的步骤和遇到的问题。
课程地址:http://www.imooc.com/learn/295
一、使用VirtualBox安装unbuntu,我用的是14.10的版本。
二、下载monogdb的源码,网址是: http://www.mongodb.org/downloads
三、解压并编译源码。
- 解压命令 tar -vxf mongodb-src-r2.8.0-rc5.tar
- 编译命令 scans all 。如果你的电脑cpu有多核心,你可以使用 scans all -j 核心数(如2、4等)来加快编译的速度,我只用了一个核心,结果速度很慢。我主要想体验下编译的过程,你也可以直接下载编译好的二进制文件。
四、编译好的常用程序介绍。
- mongod -mongodb数据库的执行程序,使用它进行数据库的部署操作
- mongo -用来连接mongodb数据库的客户端程序
- mongoimport mongoexport -mongodb数据库的导入导出
- mongodump mongorestore -mongodb数据库二进制文件的导入导出,常用于备份和恢复操作
五、搭建简单的mongodb服务器
- 创建目录结构
- 将mongod文件复制到bin目录下:cp ../mongod-linux-x86_64-2.6.7/bin/mongod bin/
- 创建配置文件mongod.conf:
port = 12345 dbpath = data logpath = log/mongod.log fork = true
- 执行mongod命令:./bin/mongod -f conf/mongod.conf
出现上述代码,表示mongodb启动成功
六、使用mongo客户端连接mongoDB服务器
- 拷贝mongo命令到bin目录: cp ../mongod-linux-x86_64-2.6.7/bin/mongo bin/
- 连接到mongoDB服务器test数据库: ./bin/mongo 127.0.0.1:12345/test
出现下图中的信息表示连接成功 - 关闭数据库
use admin db.shutdownServer()
七、mongoDB的基本操作之数据写入和查询
- 连接到数据库后,可以查看下当前有哪些数据库:show dbs
- 切换到指定数据库:use imooc
- 查看当前数据库下的集合 show tables
- 删除指定数据库:db.dropDatabase()
- 插入一条数据:db.imooc_collection.insert({x:1}) 其中imooc_collection是集合的名称
- 查找数据:db.imooc_collection.find() find中不传任何参数会返回集合中所有数据
- 统计当前数据集中的数据条数:db.imooc.collection.find().count()
- 个性化查询:跳过数据集中的前三条数据,返回两条数据并按照x值正向排序 db.imooc_collection.find().skip(3).limit(2).sort({x:1})
八、mongoDB的基本操作之数据更新
- 将x为2的数据更新为3:db.imooc_collection.update({x:2},{x:3})
- 只更新指定的数据:db.imooc_collection.update({x:2}{$set:{x:3}})
- 更新一条不存在的数据,默认不会有任何操作,如果想数据不存在时自动创建,则可以给update函数传入第三个参数true,如:db.imooc_collection.update({x:2},{x:3},true)
- update函数默认只会更新一条数据,如果想同时更新多条数据,则可以传入第四个参数,并使用$set操作符,如:db.imooc_collection.update({x:2},{x:3},false,true)
九、mongoDB的基本操作之删除数据
- 删除指定数据:db.imooc_collection.remove({x:2})
- 删除整个数据集:db.imooc_collection.drop()
十、索引
- 查看当前数据集的索引:db.imooc_collection.getIndexes()
- 创建单键索引:db.imooc_collection.ensureIndex({x:1}) 其中x的值表示索引的方向,1为正向,-1为负向
- 索引种类:_id索引、单键索引、多键索引、复合索引、过期索引、全文索引、地理位置索引
- 复合索引:db.imooc_collection.ensureIndex({x:1,y:2}) 当同时使用x和y查询时,需要用到复合索引
- 过期索引:是指在一段时间后后过期的索引。在索引过期后,相应的数据会被删除。这适合存储一些在一段时间之后会失效的数据,比如用户的登录信息、存储的日志等。
- 过期索引建立方法:db.imooc_collection.ensureIndex({x:1},{expireAfterSeconds:10}) 数据会在10秒后消失,但是此时间并不精确,数据库会每60秒执行一次删除操作