时间:2021-07-01 10:21:17 帮助过:44人阅读
MongoDB并非芒果的意思,而是源于 Humongous(巨大)一词。
MongoDB的3大技术特色如下所示:
除了上图所示的还支持:
二级索引、动态查询、全文搜索 、聚合框架、MapReduce、GridFS、地理位置索引、内存引擎 、地理分布等一系列的强大功能。
但是其也有些许的缺点,例如:
多表关联: 仅仅支持Left Outer Join
SQL 语句支持: 查询为主,部分支持
多表原子事务: 不支持
多文档原子事务:不支持
16MB 文档大小限制,不支持中文排序 ,服务端 Javascript 性能欠佳
存储方式对比
? 在传统的关系型数据库中,存储方式是以表的形式存放,而在MongoDB中,以文档的形式存在。
数据库中的对应关系,及存储形式的说明
MongoDB与SQL的结构对比详解
SQL Terms/Concepts | MongoDB Terms/Concepts |
---|---|
database | database |
table | collection |
row | document or BSON document |
column | field |
index | index |
table joins | embedded documents and linking |
primary keySpecify any unique column orcolumn combination as****primary key. | primary keyIn MongoDB, the primary key isautomatically set to the _id field. |
aggregation (e.g. group by) | aggregation pipelineSee the SQL to Aggregation MappingChart. |
JSON****格式
JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。
MongoDB 使用JSON(JavaScript ObjectNotation)文档存储记录。
JSON数据库语句可以容易被解析。
Web 应用大量使用,NAME-VALUE 配对
BSON****格式
BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是MongoDB的数据存储格式。BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通用性及JSON的schemaless的特性。
二进制的JSON,JSON文档的二进制编码存储格式
BSON有JSON没有的Date和BinData
MongoDB中document以BSON形式存放
例如:
> db.meeting.insert({meeting:“M1 June",Date:"2018-01-06"});
?? MongoDB是开源产品
?? On GitHub Url:https://github.com/mongodb
?? Licensed under the AGPL,有开源的社区版本
?? 起源& 赞助by MongoDB公司,提供商业版licenses 许可
这些优势造就了mongodb的丰富的功能:
JSON 文档模型、动态的数据模式、二级索引强大、查询功能、自动分片、水平扩展、自动复制、高可用、文本搜索、企业级安全、聚合框架MapReduce、大文件存储GridFS
下载安装包
yum -y install vim lrzsz
解压
tar xf mongodb-linux-x86_64-rhel55-3.2.7.tgz -C /application/
改名
mv mongodb-linux-x86_64-rhel55-3.2.7/ mongodb
加环境变量
vi /etc/profile
export MONGODB_HOME=/application/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
source /etc/profile
创建mongodb数据文件和日志文件的存放位置,并且对启动项进行配置
mkdir -p data
chmod -R 777 data
mkdir logs
cd logs
touch mongodb.log
mkdir conf
vim mongodb.conf
dbpath=/application/mongodb/data #数据文件存放目录
logpath=/application/mongodb/logs/mongodb.log #日志存放目录
port=27017 #端口
fork=1 #以守护程序的方式启用,即在后台运行
logappend=true
maxConns=5000
storageEngine = mmapv1
启动
# 启动数据库
mongod -f /application/mongodb/conf/mongodb.conf
#关闭数据库
mongod -f /application/mongodb/conf/mongodb.conf --shutdown
# 访问数据库
mongo
#再数据库中关闭方法
> use admin
> db.shutdownServer()
在客户端指定数据库进行连接
mongo 10.0.0.152/admin
MongoDB shell version: 3.2.8
connecting to: 10.0.0.152/admin
> db
admin
查看当前数据库版本
> db.version()
3.2.8
切换数据库
> use test;
switched to db tes
显示当前数据库
> db
test
> db.getName()
test
查询所有数据库
show dbs;
查看数据库当前状态
> use wwww;
> db.stats()
查看当前数据库的连接机器地址
> db.getMongo()
connection to 127.0.0.1
创建数据库
use wwww;
创建数据库:
当use的时候,系统就会自动创建一个数据库。
如果use之后没有创建任何集合。系统就会删除这个数据库。
删除数据库
> show dbs;
wwww 0.000GB
local 0.000GB
test 0.000GB
> use wwww
switched to db clsn
> db.dropDatabase()
{ "dropped" : "wwww", "ok" : 1 }
删除数据库:
如果没有选择任何数据库,会删除默认的test数据库
创建集合
> use wwww;
switched to db clsn
> db.createCollection(‘a‘)
{ "ok" : 1 }
> db.createCollection(‘b‘)
{ "ok" : 1 }
查看当前数据下的所有集合
> show collections;
a
b
> db.getCollectionNames()
[ "a", "b" ]
查看创建的合集
> db.getCollectionNames()
[ "a", "b", "c" ]
查看合集里的内容
> db.c.find()
{ "_id" : ObjectId("5a4cbcea83ec78b7bea904f8"), "name" : "wwww" }
{ "_id" : ObjectId("5a4cbcfc83ec78b7bea904f9"), "url" : "http://blog.wwww.com" }
重命名集合
> db.c.renameCollection("wwww")
{ "ok" : 1 }
> db.getCollectionNames()
[ "a", "b", "wwww" ]
删除合集
> db.a.drop()
true
> db.getCollectionNames()
[ "b", "wwww" ]
查询集合中的查询所有记录
> db.log.find()
MongoDB数据库默认是没有用户名及密码的,即无权限访问限制。为了方便数据库的管理和安全,需创建数据库用户。
权限 | 说明 |
---|---|
Read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 |
root | 只在admin数据库中可用。超级账号,超级权限 |
用户创建语法
{
user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>",
db: "<database>" } | "<role>",
...
]
}
user字段:用户的名字;
pwd字段:用户的密码;
cusomData字段:为任意内容,例如可以为用户全名介绍;
roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;
roles 字段:可以指定内置角色和用户定义的角色。
创建管理员用户
#进入管理数据库
> use admin
#创建管理用户,root权限
db.createUser(
{
user: "root",
pwd: "root",
roles: [ { role: "root", db: "admin" } ]
}
)
创建管理员角色用户的时候,必须到admin下创建。
删除的时候也要到相应的库下操作。
查看创建的管理员用户
show users
验证用户是否能用
> db.auth("root","root")
1 # 返回 1 即为成功
用户创建完成后在配置文件中开启用户验证
cat >>/application/mongodb/conf/mongod.conf<<-‘EOF‘
security:
authorization: enabled
EOF
重启服务
登录
注意:用户在哪个数据库下创建的,最后加上什么库。
命令行中进行登陆
[mongod@MongoDB ~]$ mongo -uroot -proot admin
MongoDB shell version: 3.2.8
connecting to: admin
>
转载 https://www.cnblogs.com/clsn/p/8214194.html#auto_id_38
MongoDB
标签:path 对应关系 python uri shutdown log map dde art