Node操作MongoDB
一、mongoose介绍
mongoose是Node环境下异步操作mongodb数据库的扩展,仅限于Node环境下使用。
使用mongoose操作mongodb数据步骤:
使用npm安装mongoose
导入模块,连接mongodb数据库
定义Schema (类似于使用mysql时定义表结构)
定义model
使用model进行数据增删改查操作
文档网址:http://www.mongoosejs.net/docs/index.html
二、链接数据库
npm安装mongoose
npm i -S mongoose
//导入模块
const mongoose = require('mongoose')
//连接数据库 返回promise对象
mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true })
//connect方法参数2在新版本需添加,否则会有警告提示
useNewUrlParser:
//当前URL字符串分析器已弃用,将在将来的版本中删除。要使用新的解析器,请将选项{usenewurlparser:true}传递给mongoclient.connect。
useUnifiedTopology:
//当前服务器发现和监视引擎已弃用,将在将来的版本中删除。要使用新的服务器发现和监视引擎,请将选项{useUnifiedTopology:true}传递给mongoclient构造函数
三、定义Schema
Schema是mongoose中会用到的一种数据模式,可以理解为数据表结构的定义;每个schema会映射到mongodb中的一个集合,它不具备操作数据库的能力。Schema中定义数据校验,默认值,字段名,字段类型等特性。
// 创建用户集合规则
const UserSchema = new mongoose.Schema({
// 字段名/域名称
name: {
// 指字域类型
type: String,
// 必填字段
required: true,
// 字段最小长度 minlength 用于字符串类型
minlength: 2
},
age: {
type: Number,
// 默认值
default:10,
// 字段最小值 min用于数字类型
min: 1
},
pwd: String,
email: String,
// 定义此字段为 字符串数组类型
hobbies: [String]
})
四、定义model
model 是由schema 生成的模型,可以对数据库的操作
// 参数1:model名称
// 参数2:schema名称
// 参数3:操作的数据集合 如果参数3没有填写则以 参1的复数形式为操作数据集合名称
const UserModel = mongoose.model('User', UserSchema, 'users')
//模型curd相关方法
Model.insertMany({key:value})
Model.deleteMany({条件},err=>{})
Model.deleteOne({条件},err=>{})
Model.countDocuments({条件})
Model.find({条件},{可选字段返回:0/1},{skip:0,limit:10})
Model.findOne({条件},{可选字段返回:0/1})
Model.updateMany({条件},{$set:{key:value}},res=>{})
Model.updateOne({条件},{$set:{key:value}},res=>{})