Nodejs-mongoose操作MongoDB

本文详细介绍了如何使用 Node.js 中的 Mongoose 模块操作 MongoDB 数据库,包括连接数据库、创建集合、插入数据、查询、删除、更新及验证等操作,并提到了关联集合的概念。
摘要由CSDN通过智能技术生成
Nodejs 操作 MongoDB
连接 MongoDB 数据库

mongoose.connect(uri[, option][, callback]):该方法用于与 MongoDB 数据库建立连接

  • mongoose 导入的 mongoose 模块

参数

  • rui 连接 MongoDB 数据库的地址
  • options 该参数是一个对象,用于设置一些选项,这些选项会被传到底层 MongoDB 驱动
  • callback
创建集合

mongoose 的一切都始于 Schema, 通过 mongoose 导出的 Schema 构造函数可以创建集合,设定集合的结构(规则);mongoose 中的集合就相当于关系型数据库中的表结构,可以设置集合中字段的类型,默认值、约束等。

Schema(definition[,options]):构造函数,通过该函数可以设计集合的结构,然后通过 new 创建实例对象;使用该构造函数时要通过 mongoose.Schema 获取,比如:new mongoose.Schema()

参数:

  • definition 该参数是一个对象,通过该参数定义集合中的字段并对字段设置相关约束
  • options
应用规则

mongoose.model(name[,schema]):将文档结构发布为模型(应用规则);返回值为模型构造函数。

参数

  • name 字符串,首字母大写的名词的单数形式,用来表示文档(模型)的名称; mongoose 会自动将该单词生成小写复数的集合名称
  • schema 该参数为设计的集合结构 (规则)
创建文档1

所谓的创建文档就是向集合中插入数据,该过程分为两步:创建集合实例,然后调用实例对象下的 save 方法将数据保存到数据库中

创建集合实例:

获取 model() 方法的返回的构造函数,该构造函数接收一个对象为参数,通过这个对象传入具体的数据,然后通过 new 关键字来创建实例对象

保存数据:

Model.prototype.save([options][,options.safe][,options.validateBeforeSave][,fn] ):该方法为 Model 原型上的方法,用于保存数据;有多个参数常用的为 fn

参数

  • fn 在数据保存完成后执行的回调函数,该函数有两个参数:错误对象 err,没有错误时值为 null;另一个参数为执行结果 doc(就是保存的数据)
创建文档2

Model.create(doc[,callback]) 将一个或多个文档保存到数据库的快捷方式;该方法的返回值为 promise 对象。

  • Model 调用 model() 方法后的返回值

参数

  • doc 需要插入集合中的文档,该参数可以是对象或数组
  • callback 数据插入完成后执行的回调函数;该函数有两个参数:错误参数对象 err 和保存的数据 doc

因为该方法的返回值为 promise 对象,所以可以省略回调函数,直接使用链式编程的方式。

下面举个例子:

// 引包
const mongoose = require('mongoose')

// 连接 MongoDB 数据库,数据库不存在时会自动创建
mongoose
  .connect('mongodb://localhost/userInfo', {
   
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(() => console.log('数据库连接成功'))
  .catch(err => console.log('数据库连接失败', err))

// 设计集合结构(类似于表结构)
const userSchema = new mongoose.Schema({
   
  username: {
   
    type: String, // 设置字段类型
    required: true // 约束不能为空
  },
  age: Number,
  gender: Boolean,
  hobby: Array
})

// 应用集合
let User = mongoose.model('User', userSchema)

/* 创建文档1 */
// 拿到模型构造函数,开始为所欲为(插入数据)
let admin = new User({
   
  username: 'admin',
  age: 19,
  gender: false,
  hobby: ['book', 'music', 'shopping']
})

// 数据持久化(保存数据)
admin.save((err, res) => {
   
  if (err) console.log('保存失败!', err)
  else console.log('保存成功!', res)
})

/* 创建文档2 */
// 通过该方法不需要去实例化集合
User.create(
  {
   
    username: 'VIP',
    age: 18,
    gender: true,
    hobby: ['running', 'basketball', 'anime']
  },
  (err
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值