1、Nosql
"不仅仅是sql",非关系型数据库存储结构。包括以下几种类型:
2、mongoDB数据模型
mongodb使用集合将数据编组,集合是一组用途相同或者类似的文档,相当于传统sql数据库中的表。
在mongodb中,文档标识单个实体的数据,而集合包括一个或者多个相关的文档。
mongodb中表示文档的记录是以BSON,一种轻量级的二进制json。
3、规划数据模型
数据范式化指通过组织文档和集合以最大限度减少冗余和依赖。
适用于:主对象与子对象是一对多的关系
对数据进行反范式化指的是找出应直接嵌入到主对象文档中的子对象。
适用于:主对象与子对象之间为一对一或者子对象很少且不会频繁更新。
4、mongoDB shell脚本编程(使用javascript)
主要通过以下三种方式实现:
如:启动mongoDB之后,输入以下命令:启动mongodb shell,连接到test数据库,并对该数据库执行db.getCollections()
mongo test -eval "printjson(db.getCollections())"
如:启动mongoDB之后,输入命令mongo打开mongodb shell,再输入:
load("E:/code/hour02/shell_script.js")
这是最常用的方法,启动mongoDB之后,直接使用mongo 命令执行,如:
mongo shell_script.js
5、配置账户和访问控制
mongo = new Mongo("localhost");
db = mongo.getDB("test")
db.createUser({
user:"testAdmin",
pwd:"test",
roles:["dbAdmin"]
});
//将testUser加入到admin数据库,只有read权限,但同时对数据库test有readWrite的权限
db = mongo.getDB("admin")
db.createUser
({
user:"testUser",
pwd:"test",
roles:
[
{role:"readWrite",db:"test"},
"read"
]
});
可分配的数据可角色:read readAnyDatabase readWrite readWriteAnyDatabase dbAdmin dbAdminAnyDatabase
clusterAdmin userAdmin userAdminAnyDatabase
到某个数据库下查看用户列表,直接输入命令:
use admin
show users
或者用JavaScript脚本文件:
mongo = new Mongo("localhost");
db = mongo.getDB("admin");
cur = db.system.users.find();
printjson(cur.toArray());
use admin
db,removeUser("testAdmin")
use admin
db.createUser({
user:"userAdmin",
pwd:"test",
roles:["userAdminAnyDatabase"]
});
创建用户管理员账号之后,使用-auth重启mongodb服务器,也可在配置文件中指定auth配置:
>mongod -dbpath "E:/Program Files/MongoDB/Server/4.0/data/
db" -auth
或者在配置文件mongod_config_auth.txt中设置auth = true
verbose = true
port = 27017
dbpath = E:\Program Files\MongoDB\Server\4.0\data\db\
auth = true
maxConns = 10
在mongodb shell中 访问数据库时,需要验证身份:
>use admin
>db,auth("useradmin","test")
或者在启动mongodb shell时就验证身份:
mongo -username "useradmin" -password "test"
mongo = new Mongo("localhost");
db = mongo.getDB("admin");
db.createUser({
user:"dbaAdmin",
pwd:"test",
roles:[
"readWriteAnyDatabase",
"dbAdminAnyDatabase",
"clusterAdmin"]
});
同样要验证身份 。