NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。
优点:
缺点:
MongoDB 官网地址:https://www.mongodb.com/
MongoDB 官方英文文档:https://docs.mongodb.com/manual/
MongoDB 各平台下载地址:https://www.mongodb.com/download-center#community
MongoDB的下载安装,分为windows/mac/linux不同的平台,但是操作大同小异,这里我已linux平台下给大家演示
1、下载好了之后,进入到下载的目录里面解压
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.0.10.tgz
2、在系统文件夹/usr/local里面新建一个文件夹mongodb,将解压好的MongoDB文件夹移动到系统的/usr/local/mongodb里面,也可以不用命令,直接拖拽一样,只不过usr是系统文件夹,需要root用户才能操作,所以使用sudo
houlei@ubuntu:~/Downloads$ sudo mv mongodb-linux-x86_64-ubuntu1604-4.0.10 /usr/local/mongodb
3、MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
export PATH=/usr/local/mongodb/bin:$PATH
4、安装MongoDB
houlei@ubuntu:/usr/local/mongodb/bin$ sudo apt install mongodb
如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。
MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):
houlei@ubuntu:/usr/local/mongodb/bin$ ./mongo
做一个简单的插入和查询的测试
> db.hero.insert({h_name:"李白"}) # 插入 WriteResult({ "nInserted" : 1 }) > db.hero.find() # 查询 { "_id" : ObjectId("5d28a0aad9b981703296bede"), "h_name" : "李白" }
db.createUser ( { user:<name_string>, #字符串 pwd:<password_string>, #字符串 roles:[{role:<role_name>,db:<db_name>}] #数组+对象 } )
user文档字段介绍:
> db.createUser({user:"Se7eN_HOU",pwd:"123456",roles:[{role:"readWrite",db:"Hero"}]}) Successfully added user: { "user" : "Se7eN_HOU", "roles" : [ { "role" : "readWrite", "db" : "Hero" } ] } >
houlei@ubuntu:~$ mongo Hero -u "Se7eN_HOU" -p "123456"
db.dropUser(<user_name>) 删除某个用户,接受字符串参数
db.dropUser("Se7eN_HOU")
db.dropAllUser() 删除当前库的所有用户
角色是授予User在指定资源上执行指定操作的权限,MongoDB官方手册对角色的定义是:
A role grants privileges to perform the specified actions on resource.
MongoDB为了方便管理员管理权限,在DB级别上预先定义了内置角色;如果用户需要对权限进行更为细致的管理,MongoDB允许用户创建自定义的角色,能够在集合级别上控制User能够执行的操作。
MongoDB使用角色(Role)授予User访问资源的权限,Role决定User能够访问的数据库资源和执行的操作。一个User能够被授予一个或多个Role,如果User没有被授予Role,那么就没有访问MongoDB系统的权限。
A user is granted one or more roles that determine the user’s access to database resources and operations. Outside of role assignments, the user has no access to the system.
1,内置角色(Built-In Roles)
内置角色是MongoDB预定义的角色,操作的资源是在DB级别上。MongoDB拥有一个SuperUser的角色:root,拥有最大权限,能够在系统的所有资源上执行任意操作。
数据库用户角色(Database User Roles):
数据库管理角色(Database Administration Roles):
备份和还原角色(Backup and Restoration Roles):
跨库角色(All-Database Roles):
集群管理角色(Cluster Administration Roles):
sudo apt-get remove mongodb
sudo apt-get remove --auto-remove mongodb
如果你还想要删除您的本地/config 文件为 mongodb,那么这将工作。
sudo apt-get purge mongodb
说明:不同平台下mongoDB同样的问题解决方案不一样,应为windows、linux、mac不同平台下的命令是有差异的,所以大家在网上搜索mongoDB安装和链接的问题的时候最好说明是什么平台下的问题,不然你使用的mac系统,解决搜索出来的是linux下的解决方案也不一样能解决问题。
1.1、也就是说mongod.service文件没有找到,需要我们手动创建一个
[Unit] Description=High-performance, schema-free document-oriented database After=network.target Documentation=https://docs.mongodb.org/manual [Service] User=mongodb Group=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf [Install] WantedBy=multi-user.target
1.2、然后执行 (激活mongod service)
sudo systemctl enable mongod
1.3、启动、重启和关闭命令
sudo service mongod start
sudo service mongod restart
sudo service mongod stop
2.1、先看服务启动没有,如果没有启动服务先启动服务:sudo service mongod start
2.2如果服务已经启动了,那有可能是上次不正常关闭mongo,导致存放数据的文件被占用了,被锁住了
houlei@ubuntu:~$ /usr/local/mongodb/bin/mongod --repair #/usr/local/mongodb是mongo的安装目录
或者
houlei@ubuntu:~$ rm -f /usr/local/data/db/mongod.lock #/usr/locak/data/db 是mongo的数据库文件路径
2.3、如果上一步解决不了,那么就是路径设置有问题,通过重新对路径的设置解决此问题
houlei@ubuntu:~$ /usr/local/mongodb/bin/mongod --dbpath=/usr/local/data/db
houleideMacPro:~ Se7eN_HOU$ mongod
-bash: mongod: command not found
解决方案:出现这个问题多数是应为,mongod或者mongo的路径不做PATH里面
export MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin
原文:https://www.cnblogs.com/Se7eN-HOU/p/11179118.html