学习MongoDB数据库.

MongoDB不是mysql…

安装

Ubuntu

apt-get install mongodb
# 检查进程是否启动
pgrep mongo -l 

在终端输入"mongo",然后回车进入数据库.

默认安装的话只允许 127.0.0.1 的IP 连接.

需要修改/etc/mongodb.conf 注释下列记录:

#bind_ip = 0.0.0.0 

创建连接用户

mongo

>use admin

switched to db admin

>db.addUser("root","1983")
# 进行用户验证:
>db.auth("root","1983")

然后安装Mongodb Compass工具进行连接.下载地址

mongodb的认证(authentication)与授权(authorization)

普通的数据库不存在root的role。

# 下面会报错
db.createUser(
 {
  user: "user",
  pwd: "password",
  roles: [ { role: "root", db: "playground" } ]
 }
)
# 
db.createUser(
 {
  user: "user",
  pwd: "password",
  roles: [ { role: "dbAdmin", db: "playground" } ]
 }
)

角色列举如下:

  • 数据库用户角色:read、readWrite;
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  • 备份恢复角色:backup、restore;
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root
  • 内部角色:__system

详细参考链接

基本概念

database

数据库,可以建立多个数据库

collection

集合,一组数据的集合

document

文档,一条具体的数据

field

字段,可以看作数据的属性.

Mongodb中的admin,config,local即database.

mongoose

Node.js操作mysql的第三方库.所有操作都是异步的api.

增删改查

mongodb不需要显示创建数据库,没有的话自动创建.

创建集合

  1. 对集合设定规则
  2. 创建集合

默认没有插入数据mongodb compass不会显示该数据库


const mongoose=require('mongoose')

const db = 'mongodb://user:passwd@47.94.255.207:27017/admin'

mongoose.connect(db,{
    useNewUrlParser: true,
    useUnifiedTopology: true
}).then(()=>console.log('认证成功'))
    .catch(err=>{
    console.log(err);
})
const courseSchema=new mongoose.Schema({
    name:String,
    author:String,
    isPublished:Boolean
});

const Course=mongoose.model('Course',courseSchema);

const course=Course({
    name:"政治导论",
    author:"习大大",
    isPublished: true
});

course.save()
// 法二
Course.create({
    name:'Javascript',
    author:'lalla',
    isPublished:false
},(err,result)=>{
    console.log(err);
    console.log(result);
});

我很好奇