MongoDB基础入门

(一)下载安装

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

tar xvf -C /opt/app mongodb-linux-x86_64-3.0.6.tgz

cd /opt/app && mv mongodb-linux-x86_64-3.0.6 mongo3.0

mkdir /opt/app/mongo3.0/{data,etc,logs}


(二)配置启动

cat /opt/app/mongodb3/etc/mongodb.conf 

##

port = 10000

bind_ip = 172.16.0.214

maxConns = 100

logpath=/opt/app/mongodb3/logs/mongodb.log

logappend=true

pidfilepath = /opt/app/mongodb3/mongo.pid

fork = true

dbpath=/opt/app/mongodb3/data

auth=true

replSet=rs0

keyFile = /opt/app/mongodb3/etc/key

------------------------------------------

echo "secrets" > /opt/app/mongodb3/etc/key && chmod 600 /opt/app/mongodb3/etc/key

启动:numactl --interleave=all /opt/app/mongodb3/bin/mongod -f /opt/app/mongodb3/etc/mongodb.conf

关闭:/opt/app/mongodb3/bin/mongod -f /opt/app/mongodb3/etc/mongodb.conf --shutdown


(三)创建系统管理用户( 非auth非replSet模式启动mongodb)

>use admin

>db.createUser({user:"dba",pwd:"dba",roles:[{role:"root",db:"admin"}]})

>db.auth("dba","dba")

Built-In Roles(内置角色):

1. 数据库用户角色:read、readWrite;

2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

4. 备份恢复角色:backup、restore;

5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

6. 超级用户角色:root  

// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

7. 内部角色:__system

PS:https://docs.mongodb.org/manual/reference/built-in-roles/


(四)配置副本集

1、连接DB:/opt/app/mongodb3/bin/mongo --host 172.16.0.214:10000 -udba -pdba admin

2、初始化

>rsconf = {_id:"rs0",members:[{_id:0,host:"172.16.0.214:10000"}]}

>rs.initiate( rsconf )

3、添加成员

>rs.add("172.16.0.214:20000")

4、删除成员

>rs.remove("172.16.0.214:30000")

5、查看配置

> rs.config()


(五)数据备份、恢复与迁移管理

1、备份全部数据库

mkdir testbak

cd testbak

mongodump

说明:默认备份目录及数据文件格式为./dump/[databasename]/[collectionname].bson

2、备份指定数据库

mongodump -d pagedb

说明:备份数据库pagedb中的数据。

3、备份一个数据库中的某个集合

mongodump -d pagedb -c page

说明:备份数据库pagedb的page集合。

4、恢复全部数据库

cd testbak

mongorestore --drop

说明:将备份的所有数据库恢复到数据库,--drop指定恢复数据之前删除原来数据库数据,否则会造成回复后的数据中数据重复。

5、恢复某个数据库的数据

cd testbak

mongorestore -d pagedb --drop

说明:将备份的pagedb的数据恢复到数据库。

6、恢复某个数据库的某个集合的数据

cd testbak

mongorestore -d pagedb -c page --drop

说明:将备份的pagedb的的page集合的数据恢复到数据库。

7、向MongoDB导入数据

mongoimport -d pagedb -c page --type csv --headerline --drop < csvORtsvFile.csv

说明:将文件csvORtsvFile.csv的数据导入到pagedb数据库的page集合中,使用cvs或tsv文件的列名作为集合的列名。需要注意的是,使用--headerline选项时,只支持csv和tsv文件。

--type支持的类型有三个:csv、tsv、json

8、从向MongoDB导出数据

mongoexport -d pagedb -c page -q {} -f _id,title,url,spiderName,pubDate --csv > pages.csv

说明:将pagedb数据库中page集合的数据导出到pages.csv文件,其中各选项含义:

-f 指定cvs列名为_id,title,url,spiderName,pubDate

-q 指定查询条件


(六)基本命令

1、show dbs

显示当前数据库服务器上的数据库

2、use pagedb

 切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等

3、show collections

显示数据库中所有的集合(collection)

4、db.serverStatus()

5、查询指定数据库统计信息

use fragment

db.stats()

6、查询指定数据库包含的集合名称列表

db.getCollectionNames()


基本DDL和DML

1、创建数据库

use dbname系统会自动延迟创建该数据库

2、删除数据库

直接使用db.dropDatabase()即可删除数据库。

3、创建集合

可以使用命令db.createCollection(name, { size : ..., capped : ..., max : ... } )创建集合,示例如下所示:

>db.createCollection('replicationColletion', {'capped':true, 'size':10240, 'max':17855200}) 

4、删除集合

删除集合,可以执行db.mycoll.drop()。

5、插入更新记录

直接使用集合的save方法,如下所示:

>db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})

6、查询一条记录

使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)

> db.storeCollection.findOne({'version':'3.5'}) 

7、查询多条记录

使用find()函数,参数指定查询条件,不指定条件则查询全部记录。

8、删除记录

使用集合的remove()方法

9、创建索引

可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:

> use pagedb  

switched to db pagedb  

> db.page.ensureIndex({'title':1, 'url':-1}) 

上述,ensureIndex方法参数中,数字1表示升序,-1表示降序。

使用db.system.indexes.find()可以查询全部索引。

10、查询索引

我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询

11、删除索引

删除索引给出了两个方法:

db.mycoll.dropIndex(name)  

db.mycoll.dropIndexes()  

第一个通过指定索引名称,第二个删除指定集合的全部索引。

12、索引重建

可以通过集合的reIndex()方法进行索引的重建

13、统计集合记录数

use fragment

db.baseSe.count()

统计结果,如下所示:

> use fragment  

switched to db fragment  

> db.baseSe.count()  

36749  

上述统计了数据库fragment的baseSe集合中记录数。

14、查询并统计结果记录数

use fragment

db.baseSe.find().count()

find()可以提供查询参数,然后查询并统计结果

15、查询指定数据库的集合当前可用的存储空间

use fragment

> db.baseSe.storageSize()

142564096

16、查询指定数据库的集合分配的存储空间

> db.baseSe.totalSize()

144096000

上述查询结果中,包括为集合(数据及其索引存储)分配的存储空间。

你可能感兴趣的:(mongodb,基本入门)