MongoDB and Node.js


https://www.mongodb.com/

0.MongoDB数据库的基本概念

  • 数据库:一个MongoDB可以有多个数据库
  • 集合:一个数据库当中可以有多个集合(数组)
  • 文档:一个集合中可以有多个文档(表记录)

文档结构很灵活,没有任何限制

  • MongoDB很灵活,不需要向MySQL一样先创建数据库、表、设计表结构
    • 在这里只需要:当你需要插入数据的时候,只需要指定往哪个数据库的哪个集合操作就可以了
    • 一切都由MongoDB来帮助你完成建库建表这件事

格式:

{
    
    
    qq:{
    
    
        user:[
            {
    
    name:'小花',age:11},
            {
    
    },
        ]
    },
    
    baidu:{
    
    
        
    }
}

1.关系型数据库和非关系型数据库

表就是关系

或者说表与表之间存在关系。

  • 所有的关系型数据库都需要通过sql语言来操作
  • 所有的关系型数据库在操作之前都需要设计表结构
  • 而且数据表还支持约束
    • 唯一的
    • 主键
    • 默认值
    • 非空
  • 非关系型数据库非常灵活
  • 有的非关系型数据库就是key-value对

MongoDB简说

  • 但是MongoDB是长的最像关系型数据库的非关系型数据库
    • 数据库-》数据库
    • 数据表-》集合(数组)
    • 表记录-》(文档对象)
  • MongoDB不需要设计表结构,也就是说可以任意往里面存数据,没有结构性这么一说

2.安装

  • 下载(选择社区版)
  • 安装
  • 配置环境变量
  • 最后输入mongod --version 测试是否安装成功

3.启动和关闭数据库

启动:

#mongodb默认使用执行 mongod 命令所处盘符根目录下的 /data/db 作为自己的数据存储目录
#所以在第一次执行该命令之前先自己手动创建一个 /data/db
mongod

如果想要修改默认的数据存储目录,可以:

mongod --dbpath=数据存储目录路径

停止:

#在开启服务的控制台,直接Ctrl + c即可停止
#或者直接关闭开启服务器的控制台

4.连接和退出数据库

连接:

#该命令默认连接本机的MongoDB服务
mongo

退出:

#在连接状态输入exit退出连接
exit

5.基本命令

1.查看显示所有数据库

show dbs

2.查看当前操作的数据库

db
#当操作的数据库里面没有数据时,显示所有的数据库是不会显示出来的

3.切换到指定的数据库(如果没有会新建)

use 数据库名称

4.插入数据

#例子:
use itcase  #使用数据库
db.like.insertOne({
    
    "apple":"red"})  #db.集合名.insertOne(json对象)
show collections  #显示当前db的所有集合  结果是like
db.like.find()    #查询like集合中的所有数据

6.在Node中如何操作MongoDB数据

1.使用官方的mongodb包来操作

https://www.npmjs.com/package/mongodb

2.使用第三方mongoose来操作MongoDB数据库

第三方包:mongoose基于MongoDB官方的mongodb包再一次做了封装

官网:http://mongoosejs.com

安装:

npm i mongoose

使用:

//引包
const mongoose = require('mongoose');
//连接test数据库
mongoose.connect('mongodb://localhost/test', {
    
    useNewUrlParser: true, useUnifiedTopology: true});
//创建一个模型,就是在设计数据库
const Cat = mongoose.model('Cat', {
    
     name: String });
//实例化一个Cat
const kitty = new Cat({
    
     name: 'Zildjian' });
//持久化保存Kitty实例
kitty.save().then(() => console.log('meow'));

3.官方指南

(1)设计Schema 发布model

var mongoose = require('mongoose')
var Schema = mongoose.Schema

//1.连接数据库
// 指定连接的数据库不需要存在,当插入第一条数据之后就会被自动创建出来
mongoose.connect('mongodb://localhost/test')

// 2.设计文档结构(表结构)
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性,不要有脏数据
var userSchema = new Schema({
    
    
    username:{
    
    
        type:String,
        required:true  //说明必须有
    },
    password:{
    
    
        type:String,
        required:true
    },
    email:{
    
    
        type:String
    }
})

// 3.将文档结构发布为模型
// mongoose.model方法就是用来将一个架构发布为model
// 第一个参数:传入一个大写名词单词字符串用来表示你的数据库名称
//          mongoose会自动将大写名词的字符串生成小写复数的集合名称
//          例如这里的User最终会变为users集合名称
// 第二个参数:架构 Schema
// 返回值:模型构造函数
var User = mongoose.model('User',userSchema)

// 4.当有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据进行增删改查了

(2)增加数据

// 增加数据
var admin = new User({
    
    
    username:'admin',
    password:'1212121',
    email:'[email protected]'
})

admin.save(function(err,ret){
    
    
    if(err){
    
    
        console.log('保存失败')
    }else{
    
    
        console.log('保存成功')
        console.log(ret)  //ret就是刚刚插入的数据
    }
})

(3)查询

  • 查询所有
// 查询所有数据
User.find(function(err,ret){
    
    
    if(err){
    
    
        console.log('查询失败')
    }else{
    
    
        console.log('查询成功')
        console.log(ret)
    }
})
  • 按条件查询所有
// 按条件查询数据
User.find({
    
    
    username:'hhh'     //查找名为hhh的数据
},function(err,ret){
    
    
    if(err){
    
    
        console.log('查询失败')
    }else{
    
    
        console.log('查询成功')
        console.log(ret)
    }
})
  • 按条件只查询第一条数据
// 只找匹配的第一个数据
User.findOne({
    
    
    username:'hhh'     //查找名为hhh的数据
},function(err,ret){
    
    
    if(err){
    
    
        console.log('查询失败')
    }else{
    
    
        console.log('查询成功')
        console.log(ret)
    }
})

(4)删除数据

// 删除数据
User.remove({
    
    
    username:'hhh',
},function(err,ret){
    
    
    if(err){
    
    
        console.log('删除失败')
    }else{
    
    
        console.log('删除成功')
    }
})

(5)更新数据

根据条件更新所有:

Model.update(conditions,doc,[options],[callback])

根据指定条件更新一个:

Model.findOneAndUpdate([conditions],[update],[options],[callback])

根据id更新一个:

// 更新数据--通过ID来更新
User.findByIdUpdate('id号',{
    
    
    password:'33232323'
},function(err,ret){
    
    
    if(err){
    
    
        console.log('更新失败')
    }else{
    
    
        console.log('更新成功')
    }
})

猜你喜欢

转载自blog.csdn.net/weixin_48931875/article/details/118927302