一、基本概念
MongoDB中的几个基本概念:数据库,集合,文档
数据库
数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。
集合
集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。
通常情况下,一个集合中的所有文件是相同或相关的目的。
文档
文档是一组K - V对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。
二、mongodb命令
#启动mongo服务端
mongod -dbpath="数据文件夹路径"
#启动客户端
mongo localhost:27017
#创建数据库
use mydb;
#删除当前数据库
db.dropDatabase();
#查询所有数据库
show dbs;
#查询当前所在的数据库
db;
创建集合有两种方式
1.显示创建
db.createCollection("person")
2.隐式创建
db.c1.insert({name:"haiou",desc:"baji"})//创建c1集合,同时插入数据
//显示当前数据库中的所有集合
show collections;//显示person,c1和system.indexes
或show tables;
for(var i=0;i<100000;i++){
db.person.insert({name:"liguannan",age:i});
}
db.person.find();//显示所有的记录(命令行中只会显示20条记录)
db.person.find().count();//统计记录数
db.person.findOne();//查询第一条记录
db.person.find({age:19});//条件查询:查询age=19的记录
db.person.find({age:19},{name:1});//过滤字段:结果只显示name列
db.person.remove({age:19});//删除
db.person.find().skip(1).limit(10);//分页:从1开始,前10条
xx.sort({age:-1});//按照age降序:-1表示降序,1表示升序
三、Mongo数据库的备份和恢复
Mongo数据库的备份使用的命令是mongodump,数据库的恢复使用的命令是mongorestore命令。
#将本地的foobar数据库备份到F盘符下的mongoBackup目录下。
mongodump -h localhost:27017 -d foobar -o f:/mongoBackup
现在我们可以将数据删掉(db.dropDatabases()),然后使用恢复命令将数据恢复。
mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
- -h:Mongo所在服务器的地址
- -d:需要恢复的数据库实例,例如,test,当然这个名称也可以和备份的时候不一样,比如test2
- -dirctoryperdb:备份数据库所在的位置,例如:c:\data\dump\test
四、Mongo数据库的导入与导出
Mongo数据库的导出与导入分别使用的命令是mongoexport和mongoimport。
1.导出:
导出数据可以使用命令:
mongoexport -h dbhost -d dbname -c collectionName -o output
- -h 数据库地址
- -d 指明使用的库
- -c 指明要导出的集合
- -o 指明要导出的文件名
#将foobar数据库中的user集合导出到F:\mongoExport.txt(也可以导出为word,excel等)
mongoexport -h localhost:27017 -d foobar -c user -o F://mongoExport.txt
导出的文件打开后格式如下:
{ "_id" : "66", "_class" : "com.yihaomen.mongodb.domain.User", "name" : "66", "age" : 66 }
{ "_id" : "88", "_class" : "com.yihaomen.mongodb.domain.User", "name" : "88", "age" : 88 }
{ "_id" : { "$oid" : "55dfb5a5880b548e0df8ef9f" }, "uid" : 1, "name" : "lisi", "age" : 18 }
{ "_id" : { "$oid" : "55dfb5b5880b548e0df8efa0" }, "uid" : 2, "name" : "wangwu", "age" : 19 }
{ "_id" : { "$oid" : "55dfb5c4880b548e0df8efa1" }, "age" : 21, "name" : "zhangsan", "uid" : 3 }
2.导入
导入数据可以使用命令:
mongoimport -h dbhost -d dbname -c collectionname 文件的地址...
参数说明:
- -h 数据库地址
- -d 指明使用的库
- -c 指明要导入的集合
五、安全认证
每个MongoDB实例中的数据库都可以有许多用户。如果开启了安全性检查,则只有数据库的认证用户才能执行读或者写操作。
在认证的上下文中,MongoDB会将普通的数据作为admin数据库处理。admin数据库中的用户被视为超级用户(即管理员)。
在认证之后,管理员可以读写所有数据库,执行特定的管理命令,如listDatabases和shutdown。在开启安全检查之前,一定要至少有一个管理员账号。
在admin数据库中创建管理员账号:
use admin;
db.addUser(“root”,”root”);
在test数据库中创建普通账号:
use test;
db.addUser(“zhangsan”,”123”);
db.addUser(“lisi”,”123”,true);
注意:用户zhangsan,密码为123,对test数据库拥有读写权限
用户lisi,密码为123,对test数据库拥有只读权限
重新启动数据库服务,并开启安全检查:
mongod --dbpath d:\mongo_data --auth
六、集群
主从复制(主从集群 )
为了方便演示,可以在一台计算机上来模拟主节点和从节点。在D盘创建两个目录master和slave,master目录作为主节点的数据文件的目录,slave目录作为从节点的数据文件的目录。
注意:主节点和从节点要指定不同的端口。
启动主节点:mongod --dbpath d:\master --port 10000 --master
启动从节点:mongod --dbpath d:\slave --port 10001 --slave --source localhost:10000
启动成功后就可以连接主节点进行操作了,而这些操作会同步到从节点。
七、副本集
副本集就是有自动故障恢复功能的主从集群。
mongoDB也可以配置成主从模式,但官方已经不建议使用主从模式了,替代方案是采用副本集的模式
主从集群和副本集最大的区别就是副本集没有固定的“主节点”;整个集群会选出一个“主节点”,当其挂掉后,又在剩下的从节点中选中其他节点为“主节点”,副本集总有一个活跃点(primary)和一个或多个备份节点(secondary)。
八、分布式存储
九、Spring整合Mongodb
文档:
http://docs.spring.io/spring-data/data-document/docs/