mongodb的相关操作

mongodb

mongodb与mysql的区别

  • mysql 都是关系型数据库
    -> 存储, 多表存储, 每一个表里面可以写一个信息, 和其他表关联
    -> 多表联合查询
    -> 多表之间可以存在联系, 可以使用 sql 语句让多张表联合在一起
  • mongodb 是非关系型数据库
    -> 存储, 以集合(库 database)的形式存储
    -> 集合里面都是以 json 文件的格式在存储
    -> 多个表之间没有联系, 不能通过语句来产生联系(因为根本没有固定语句)

操作mongodb数据库

  • 使用一个第三方包叫做 mongoose
    • 专门用来操作 mongodb 数据库
    • 直接下载导入使用就可以了
    • npm i mongoose
//0. 导入 mongoose
const mongoose = require('mongoose')

//1. 连接到数据库
//mongoose 默认端口号27017
mongoose.connect('mongodb://localhost:27017/gp19', (err, info) => {
  if (err) return console.log(err)
  console.log('连接成功')
})

//2. 创建一个结构 (他只是一个集合,表明数据结构,以后数据格式都要严格按照规定的结构执行。此时还不是数据库)
const users = new mongoose.Schema({
  username: String,
  age: Number,
  gender: String
})

//3. 获取表的操作模型(进入那一张表)
const UserModel = mongoose.model('user', users)
//user,如果没有这个表时,他会给你创建这个表user,但是会自动变成复数形式,users
//同时,表不存在时,第一次使用该表要new UserModel(),否在是不存在的,之后可以直接使用UserModel修改表的内容
//4. 存储一条信息
new UserModel({
    username: '李思',
    age: 22,
    gender: '女'
  })
  .save()   //自带promise结构
  .then(res => {
    console.log(res)
    console.log('存储成功')
  })
  .catch(err => {
    console.log(err)
    console.log('存储失败')
  })

创建结构时可缩小关键字的取值范围

const users = new mongoose.Schema({
  username: String,
  age: {
    type: Number,
    min: 18,
    max: 60
  },
  gender: {
    type: String,
    enum: ['男', '女', '保密']//该属性值必须是这个数组里面的内容
  },
  hobby: Array,
  desc: {
    type: String,
    minlength: 5,
    maxlength: 10,
    required:true,  //表示属性必填
    default: '我是一个管理员'
  },
  createTime: {
    type: Date,
    default: Date.now()
  }
})

查询和筛选查询

const UserModel = mongoose.model('user', users)

查询 find

=> 查询所有内容
=> 直接利用模型使用 find()
UserModel.find({ username: '你好', age: { $gt: 20, $lt: 30 } })

筛选查询

  • 需要在 find 以后使用
    • or([{}, {}, {}])
    • and([{}, {}])
    • where({})
UserModel
  .find({ username: '你好', age: { $gt: 20, $lt: 30 } })
  //.or([{ username: 'Jack' }, { age: 18 }])// 满足某个 括号中是一个数组,数组中是若干个对象
  //.and([{ username: 'Jack' }, { age: 18 }])// 并列条件
  .where({ age: { $gte: 20, $lt: 30 } })// 直接写入需要满足的条件

其他查询方法

=> 直接利用模型调用
=> findbyId()
=> findByIdAndDelete()
=> findByIdAndRemove()
=> findByIdAndUpdate()
=> findOne()
=> findOneAndRemove()
=> findOneAndDelete()
=> findOneAndUpdate()
//id是数据库中自动生成的随机乱码
//查找
UserModel.findById('5f4da485530415140c1aff3a').then(res => console.log(res))
//查找并删除该id对应的数据
UserModel.findByIdAndDelete('5f4da485530415140c1aff3a').then(res => console.log(res))
//查找并更新该数据
UserModel.findByIdAndUpdate('5f4da44e233ea447b4ef9bfb', {
  username: 'hello world'
}).then(res => console.log(res))
//通过某个属性查找一个数据
UserModel.findOne({ age: 22 }).then(res => console.log(res))

删除操作

删除多个

=> deleteMany({ 条件 }).then()

  • 删除多个, 只要满足条件的都会删除
  • 条件也可以写多个
UserModel.deleteMany({
  age: 22
}).then(res => console.log(res))

删除一个

=> deleteOne({ 条件 }).then()

  • 删除一个, 找到数据库中满足条件的第一个删除
  • 条件可以写多个
UserModel.deleteOne({
  age: 24
}).then(res => console.log(res))

修改多个

=> updateMany({ 条件 }, { 要修改成什么 }).then()

  • 根据条件修改多个, 只要满足条件的都修改
  • 条件可以写多个
UserModel.updateMany({
  age: { $gte: 20, $lt: 60 }
}, {
  //修改的时候要遵循你创建的时候的规则
  gender: '保密'
}).then(res => console.log(res))

修改一个

=> updateOne({ 条件 }, { 要修改成什么 }).then()

  • 根据条件, 把满足条件的第一个修改掉
  • 条件可以写多个
UserModel.updateOne({ gender: '保密' }, { age: 33 }).then(res => console.log(res))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值