MongoDB 之快速入门

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值