mongoose萌新笔记

mongoose

1.momgoDB数据库的基本概念

mongoDB数据库由以下三个部分组成

  • 数据库
    • 可以有多个数据库
  • 集合
    • 一个数据库可以有多个集合
  • 文档
    • 一个集合可以有多个文档
    • 不需要和mySQL一样先建立数据库,设计表结构
      • 在这里,当需要插入数据的时候,只需要指定往哪个集合中插入就行了

可以认为mongoDB就是一个大的对象,存储着不同的数据的对象
对象里面就是一个个集合,可以理解为数组,如qq对象中的user集合,其实就是数组.集合里存储的是对象,这一个一个对象就是文档

所以说 数据库 包含 集合, 集合 包含 文档

其中的文档没有结构性,可以随意写

但是在实际使用过程中不可能这样,我们可以要求对象必须有name 必须有age等等属性

以下的内容就可以当做是mongoDB的一个存储结构

{
  qq: {    # 数据库qq
    users: [ # 集合user
      {name: '张三', age: 18},    # 集合下的文档
      {name: '李四', age: 18},
      {name: '张三', age: 18},
      {name: '张三', age: 18},
      {name: '张三', age: 18},
    ],
    products: [

    ]
  }
  Taobao: {

  }
  baidu: {

  }
}

2. 起步

npm i mongoose

hello world

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});

const Cat = mongoose.model('Cat', { name: String });

const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));

数据库的基本功能和数据库的基本操作步骤

  1. 引包
const mongoose = require('mongoose')
const Schema = mongoose.Schema
  1. link database

指定链接的数据库不需要事先存在,当插入第一个数据库的时候就会自动创建

mongoose.connect('mongodb://localhost/test')
  1. 设计集合(在mySQL中是表)结构

设计集合结构需要以下内容

  • 字段结构(就是表结构中的属性名称)
  • 值类型

这样对集合结构的约束是为了保证数据的完整性,保证数据库没有脏数据

const userSchema = new Schema({//这就创建了一个集合结构
  username: {
    type: String,//值的类型
    required: true//表示本属性必须要有
  },
  password:{
    type: String,
    required: true
  },
  Email: String
})
  1. 将文档结构发布为模型

mongoose.modal方法就是将一个架构发布为modal的

  1. 第一个参数用来表示数据库名称,mongoose自动会把大写名词生成小写负数的集合名称
  2. 第二个参数 架构Schema
  3. 第三个参数 自己指定的表名,如果指定则不会自动按照第一条规则生成表名
  4. 返回模型构造函数
const User = mongoose.model('User', userSchema, 'users')
  1. 当我们有了模型构造函数就可以对users数据库中的内容进行操作了

-增加数据
首先实例化User Modal创建增加的数据

const admin = new User({
  username: 'admin',
  password: '123456',
  Email: 'admin@admin.com'
})

var users = new User({
  username: 'users',
  password: '123456',
  Email: 'admin@admin.com'
})

//接着需要数据永久化存储
admin.save().then(() => console.log('success'))
users.save().then(()=> console.log('success'))

  • 查询数据
  1. 使用模型构造函数来查询全部数据
User.find((err, ret) => console.log(ret))
//这样查询到的是全部数据
  1. 条件查询单个
User.findOne({
  username: 'users'
},(err, ret) =>{
  console.log('findOne + ' + ret)
})
//返回和条件相符的数据

如果第一个参数,也就是条件为空,返回集合中的第一个文档

  • 更新数据
User.updataOne(要查找的数据, 要更新的数据, 回调函数)

User.updataOne({name: 'users'}, {name: 'zhang'}, (err, ret) => {
	console.log('data saving is success ' + ret)
})
  • 删除数据
User.deleteOne({name: 'users'}, (err, ret) => {
	console.log(ret)
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值