MongoDB的安装和操作
Windows下的安装
下载地址
取消MongoDB Compass的安装选项(不取消安装极慢),需要可自行安装。
MongoDB Compass:可视化工具。
双击mongo.exe可以运行MongoDB自带客户端,操作MongoDB。
Linux下的安装
tar -xvf mongodb-linux-x86_64-4.0.10.tgz
mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb
# 配置mongo命令到环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/mongodb/mongodb-linux-x86_64-rhel70-5.0.4/bin
source /etc/profile
# 数据存储目录
mkdir -p /mongodb/single/data/db
# 日志存储目录
mkdir -p /mongodb/single/log
# 启动命令
mongod -f /home/mongodb/mongod.conf
MongoDB配置文件:
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
# #The path of the log file to which mongod or mongos should send all diagnostic logging information destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/mongodb/single/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is "/data/db".
dbPath: "/mongodb/single/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
net:
#服务实例绑定的IP,默认是localhost,192.168.0.2服务器内网地址
bindIp: localhost,192.168.0.2
#bindIp
#绑定的端口,默认是27017
port: 27017
开启安全认证
# 连接mongo
mongo --port 27017
show dbs
use admin
# 创建超级管理员用户,只能在 admin 数据库中创建此角色用户。。
db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
mongo -u root -p root123456 127.0.0.1:27017/admin
到配置文件中修改配置,启用安全认证。再重新开启mongo服务。
#开启认证
security:
authorization: enabled
show dbs此时看不到任何数据库,说明我们的安全认证用户配置生效了。首先使用use admin通过 db.auth('root','密码')
输出1就是验证成功。然后再查看数据库。
创建其他账号:
# 使用管理员账号登录
mongo -u root -p root123456 127.0.0.1:27017/admin
# 切换到需要创建账号的数据库
use testDB
# 创建账号,用户名:testuser 密码:123456 数据库:testDB 权限:readWrite
db.createUser({user:"testuser",pwd:"123456",roles:[{role:"readWrite",db:"testDB"}]})
# 登录MongoDB
mongo -u testuser -p 123456 127.0.0.1:27017/testDB
# boot 连接 uri
mongodb://testuser:123456@127.0.0.1:27017/testDB
MongoDB用户角色
MongoDB 每个数据库都有自己的用户。
# 为 test 数据库创建了一个 test 用户,密码 test,角色 dbOwner
db.createUser({user:"test",pwd:"test",roles:[{role:"dbOwner",db:"test"}]})
MongoDB体系结构
MongoDB是非关系型数据库当中最像关系型数据库的,所以通过它与关系型数据库的对比,来了解下它的概念。
数据库操作
创建数据库,使用use命令去创建数据库,当插入第一条数据时会创建数据库,例如创建一个test数据库:
> use test
switched to db test
> db.article.insert({name:"MongoDB 教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
删除数据库,使用db对象中的dropDatabase()方法来删除:
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
集合操作
创建集合,使用db对象中的createCollection()方法来创建集合,例如创建一个article集合;
> use test
switched to db test
> db.createCollection("article")
{ "ok" : 1 }
> show collections
article
删除集合,使用collection对象的drop()方法来删除集合,例如删除一个article集合;
> db.article.drop()
true
> show collections
文档操作
插入文档
MongoDB通过collection对象的insert()方法向集合中插入文档,语法如下;
db.collection.insert(document)
插入一个article文档;
db.article.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'Andy',
url: 'https://www.mongodb.com/',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
使用collection对象的find()方法可以获取文档,例如获取所有的article文档;
db.article.find({})
更新文档
MongoDB通过collection对象的update()来更新集合中的文档,语法如下;
db.collection.updateOne(<query>, <update>)
db.collection.updateMany(<query>, <update>)
# query:修改的查询条件,类似于SQL中的WHERE部分
# update:更新属性的操作符,类似与SQL中的SET部分
将title为 “MongoDB 教程” 的所有文档的title修改为 “MongoDB”;
db.article.updateMany({'title':'MongoDB 教程'},{$set:{'title':'MongoDB 1'}});
db.article.updateOne({'title':'MongoDB 1'},{$set:{'title':'MongoDB 123'}});
删除文档
MongoDB通过collection对象的remove()方法来删除集合中的文档,语法如下;
db.collection.remove(
<query>,
{
justOne: <boolean>
}
)
# query:删除的查询条件,类似于SQL中的WHERE部分
# justOne:设置为true只删除一条记录,默认为false删除所有记录
db.article.remove({'title': 'MongoDB 123'})
查询文档
MongoDB通过collection对象的find()方法来查询文档,语法如下;
db.collection.find(query, projection)
# query:查询条件,类似于SQL中的WHERE部分
# projection:可选,使用投影操作符指定返回的键
db.article.find({'title':'MongoDB 教程'});
# 模糊匹配,相当于mysql中的 '%mongodb%'
db.article.find({'url':/mongodb/});
参考:https://blog.csdn.net/zhenghongcs/article/details/105985460