MongoDB

介绍

CMS 采用 MongoDB 数据库存储 CMS 页面信息, CMS 选用 Mongodb 的原因如下:
  1. Mongodb是非关系型数据库,存储Json格式数据 ,数据格式灵活。
  2. 相比课程管理等核心数据CMS数据不重要,且没有事务管理要求。

下载

MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从 MongoDB 官网下载安装。
官方地址: https://www.mongodb.com/

安装

  • 下载zip文件解压后,如果里头没有data 和 logs文件目录 如下 新建这两个目录 data目录下再新建一个db目录 logs 目录下新建一个 mongo.log 文件
  • 在data文件夹中新建db文件夹,
  • 在logs中创建mongo.log文件
  • 在mongo.config 新建的配置文件中添加如下配置信息
dbpath=D:\environment\mongodb\data\db #数据库路径
logpath=D:\environment\mongodb\logs\mongo.log #日志输出文件路径
logappend=true #错误日志采用追加模式
journal=true #启用日志文件,默认启用
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27017 #端口号默认为27017
  • 使用管理员什么打开在bin目录cmd
    .\mongod --dbpath D:\Mongodb\mongodb\mongodb\data\db
  • 然后打开浏览器输入 localhost:27017 看看就会有下图
  •  安装windows服务
    切换到bin目录下,执行
    mongod --config "D:\Mongodb\mongodb\mongodb\mongo.config" --install --serviceName "mongodb"
  •  配置环境变量
    添加path路径到系统变量  D:\environment\mongodb\bin
  • 每次使用前需要先开启服务 

 启动客户端

双击bin目录里的mongo.exe文件

下载可视化客户端studio3t

链接:https://pan.baidu.com/s/1uu66wV_JYeIBefJzSSm5xw 
提取码:2015

mongodb

基础概念

mongodb 中是通过数据库、集合、文档的方式来管理数据,下边是 mongodb 与关系数据库的一些概念对比:
  • 一个mongodb实例可以创建多个数据库
  • 一个数据库可以创建多个集合
  • 一个集合可以包括多个文档

连接mongodb

  1. 双击bin目录中的mongo.exe
  2. 使用studio3t连接
  3. 使用cmd输入mongo.exe
  4. 使用java程序连接
    参考文档: 连接到 MongoDBhttp://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/添加依赖
    <dependency> 
        <groupId>org.mongodb</groupId> 
        <artifactId>mongo‐java‐driver</artifactId> 
        <version>3.4.3</version> 
    </dependency>

    测试程序

    @Test public void testConnection(){ 
        //创建mongodb 客户端 
        MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); 
    
        //或者采用连接字符串 
        //MongoClientURI connectionString = new MongoClientURI("mongodb://root:root@localhost:27017"); //MongoClient mongoClient = new     MongoClient(connectionString); 
    
        //连接数据库
        MongoDatabase database = mongoClient.getDatabase("test"); 
        // 连接collection MongoCollection<Document> collection =                     database.getCollection("student"); 
    
        //查询第一个文档 
        Document myDoc = collection.find().first(); 
        //得到文件内容 json串 
        String json = myDoc.toJson(); 
        System.out.println(json); 
    }

 数据库

查询数据库

show dbs 查询全部数据库
db 显示当前数据库

创建数据库

use DATABASE_NAME
例子:
use test02
test02 数据库则切换到此数据库,没有则创建。
注意:
新创建的数据库不显示,需要至少包括一个集合。

 删除数据库

db.dropDatabase()
删除 test02 数据库
先切换数据库: use test02
再执行删除: db.dropDatabase()

集合

集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。

 创建集合

db.createCollection(name, options) 
name: 新创建的集合名称 
options: 创建参数

例子

db.createCollection("NAME")

查询集合

show collections

删除集合

db.collection.drop() 
例子: db.student.drop() 删除student集合

文档

插入文档

mongodb 中文档的格式是 json 格式,下边就是一个文档,包括两个 key :_id主键和 name
{
 "_id" : ObjectId("5b2cc4bfa6a44812707739b5"), "name" : "黑马程序员" 
}
插入命令:
db.COLLECTION_NAME.insert(document)

 每个文档默认以_id作为主键,主键默认类型为ObjectId(对象类型),mongodb会自动生成主键值。

例子:

db.student.insert({"name":"黑马程序员","age":10})
注意:同一个集合中的文档的 key 可以不相同!但是建议设置为相同的。

 更新文档

命令格式

db.collection.update( 
<query>, 
<update>, 
<options> 
)
query:查询条件,相当于sql语句的where 
update:更新文档内容 
options:选项

替换文档

将符合条件 "name":" 北京黑马程序 " 的第一个文档替换为 {"name":" 北京黑马程序员 ","age":10}
db.student.update({"name":"黑马程序员"},{"name":"北京黑马程序员","age":10})

$set修改器  

使用 $set 修改器指定要更新的 key key 不存在则创建,存在则更新。
将符合条件 "name":" 北京黑马程序 " 的所有文档更新 name age 的值。
db.student.update({"name":"黑马程序员"},{$set:{"name":"北京黑马程序员","age":10}},{multi:true})
multi
false 表示更新第一个匹配的文档,
true 表示更新所有匹配的文档。

删除文档

命令格式: 

db.student.remove(<query>) 
query:删除条件,相当于sql语句中的where

删除所有文档

db.student.remove({})

删除符合条件的文档

db.student.remove({"name":"黑马程序员"})

查询文档

命令格式

db.collection.find(query, projection) 
query:查询条件,可不填 
projection:投影查询key,可不填

查询全部

db.student.find()

查询符合条件的记录

 查询name等为"黑马程序员"的文档。

db.student.find({"name":"黑马程序员"})

 投影查询

 只显示nameage两个key_id主键不显示。

db.student.find({"name":"黑马程序员"},{name:1,age:1,_id:0})

用户

创建用户

mongo>db.createUser( 
{ user: "<name>", 
  pwd: "<cleartext password>", 
  customData: { <any information> }, 
  roles: [ 
    { role: "<role>", db: "<database>" } | "<role>", 
    ... 
  ]} 
)

例子:

创建 root 用户,角色为 root
use admin 
db.createUser( 
  { 
    user:"root", 
    pwd:"root", 
    roles:[{role:"root",db:"admin"}] 
  } 
)
内置角色如下:
  1.  数据库用户角色:readreadWrite;
  2.  数据库管理角色:dbAdmindbOwneruserAdmin
  3.  集群管理角色:clusterAdminclusterManagerclusterMonitorhostManager
  4. 备份恢复角色:backuprestore
  5. 所有数据库角色:readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase
  6. 超级用户角色:root

在admin数据库下创建的用户是可以访问其他数据库的 

查询用户

查询当前库下的所有用户:
show users

认证登录

 为了安全需要,Mongodb要打开认证开关,即用户连接Mongodb要进行认证,其中就可以通过账号密码方式进行认证

  1. 在mono.conf中添加设置auth=true
  2. 重启Mongodb
  3. 使用账号和密码连接数据库
    1) mongo.exe连接
    mongo.exe -u root -p root --authenticationDatabase admin
    2)studio3t连接

删除用户

语法格式:
db.dropUser(" 用户名 ")
例子:
删除 root1 用户
db.dropUser("root1")

修改用户

语法格式

db.updateUser( 
  "<username>", 
  { 
    customData : { <any information> }, 
    roles : [ 
      { role: "<role>", db: "<database>" } | "<role>", 
      ... 
      ], 
    pwd: "<cleartext password>" 
    },
    writeConcern: { <write concern> }
)

 例子:

修改root用户的角色为readWriteAnyDatabase

use admin 
db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

修改密码

语法格式

db.changeUserPassword("username","newPasswd")

例如

修改 root 用户的密码为 123
use admin 
db.changeUserPassword("root","123")

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值