MongoDB学习笔记三 - Mongoose API的使用
2021/8/18 2:06:10
本文主要是介绍MongoDB学习笔记三 - Mongoose API的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在上一篇我们讲了如何通过Mongoose
想数据库动态添加数据, 接下来我们一起来看一下如何通过Mongoose
来对数据库进行增删改查等一系列操作
Model 对象的方法
remove(cinditions,callback)
deleteOne(conditons.callback)
deleteMant(conditions,callback)
find(conditions,projection,options,callback)
findById(id,projection,options,callback)
findOne(conditions,projection,options,callback)
count(conditions,callback)
create(doc,callback)
update(conditions,doc,options,callback)
- 等等
1. 前置代码
// 引入mongoose模块 const mongoose = require("mongoose"); // 连接数据库 mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser: true ,useUnifiedTopology: true}); // 测试是否连接成功 mongoose.connection.once("open", function () { // 连接成功执行 console.log('连接成功~'); }); // 创建Schema对象, 赋值给一个变量 const Schema = mongoose.Schema; // 创建Schema(模式)对象 const stuSchema = new Schema({ name: String, age: Number, gender: { type:String, default:'男' }, address:String }); // 通过Scheme来创建Model // Model代表的是数据库中的集合, 通过Model才能对数据库进行操作 // mongoose.model(modelName,schema); // modelName: 就是要映射的集合名称, mongoose会自动将集合名变成复数 // schema: 创建的Schema对象 const stuModel = mongoose.model('student', stuSchema);
2. 查询文档
演示:
find(conditions,[projection],[options],[callback])
- 查询所有符合条件的文档
stuModel.find({}, {name:1,_id:0}, function (err,docs) { if (!err) { console.log(docs) } })
运行结果:
{skip:3,limit:1}: 表示跳过三条数据, 显示一条数据 stuModel.find({}, { name: 1, _id: 0 }, {skip:3,limit:1},function (err,docs) { if (!err) { console.log(docs) } })
findById(id,[projection],[options],[callback])
- 根据文档的_id
属性查询文档
stuModel.findById("611a9aa01647216accf385fa", function (err, docs) { console.log(err) if (!err) { console.log(docs) } })
findOne(conditions,[projection],[options],[callback])
- 查询符合条件的第一个文档
stuModel.findOne({}, { name: 1 },function (err,docs) { if (!err) { console.log(docs) } });
参数解析:
- conditions: 查询条件
- projection: 投影
- 两种方式,下面两种方式所投影出来的效果是一样的
{name:1,_id:0}
"name -_id
- options: 查询选项(
skip, limit
) - callback: 回调函数, 查询结果会通过回调函数返回
**注意:**通过find() 查询的结果, 返回的对象, 就是Document 文档对象
Document对象是Model的实例
验证代码如下:
stuModel.findById("611a9aa01647216accf385fa", function (err, docs) { if (!err) { console.log(docs instanceof stuModel) } })
3. 修改文档
update(conditions,doc,[options],callback)
updateMany(conditions,doc,[options],callback)
updateOne(conditions,doc,[options],callback)
replaceOne(conditions,doc,[options],callback)
- 使用给定文档替换现有文档
参数
conditions
: 查询条件doc
: 修改后的对象options
: 配置参数callback
: 回调函数
// 修改_id为611a9aa01647216accf385fa的数据,将name改为张三 stuModel.update({ _id: '611a9aa01647216accf385fa' }, { $set: { name: '张三' } },function (err,doc) { console.log(err, doc); });
4. 删除文档
remove(cinditions,callback)
deleteOne(conditons.callback)
deleteMant(conditions,callback)
// 删除文档中 name: '张三' 的数据 stuModel.remove({ name: '张三' }, function (err, doc) { if (!err) { console.log(doc); console.log('删除成功') } })
补充
Model.count(conditions , callback )
conditions :
条件callback
: 回调函数
stuModel.count({ name: '小明' }, function (err, count) { console.log(count); } )
Document文档对象
- 通过
Model
对数据库进行查询时, 会返回Document
对象或Document
对象组合 Document
继承自Model
,代表一个集合中的文档Document
对象也可以和数据库进行交互操作
Document对象的方法
equals(doc)
id
get(path,[type])
set(path,value,[type])
update(update,[options,callback])
save([callback])
remove([callback])
isNew
isInit(path)
toJSON()
toObject()
前置代码同上:
演示
1. 插入数据
save([callback])
const stuModel = mongoose.model('student', stuSchema); // 创建一个Document var stu1 = new stuModel({ name: '路明非', age: 24, gender: '男', address:'卡塞尔学院' }); // console.log(stu1); // 调用document API 将数据保存到数据库 stu1.save(function (err) { if (!err) { console.log('保存成功'); } })
2. 更新数据
update(update,[options,callback])
// Mongoose中的方法也可以使用promise的方式 stuModel.findOne({}).then(res => { res.update({ $set: { age: 22 } }).then(res => { console.log('修改成功'); }) })
// 更新数据方法二 stuModel.findOne({}).then(res => { res.age = 25; res.save(); })
set(path,value,[type])
: 根据当前document对象设置对应属性值
// set() stuModel.findOne({ name: '楚子航' }).then(res => { console.log(res.set("age",15)); })
3. 删除数据
remove([callback])
// remove([callback]) - 删除数据 stuModel.findOne({ name: '楚子航' }).then(res => { res.remove() })
4. 获取数据
get(path,[type])
: 获取当前document对象属性
stuModel.findOne({ name: '楚子航' }).then(res => { console.log(res.get('name')) })
5. 转换数据格式
toJSON()
: 转换为一个JSON
对象
// toJSON() stuModel.findOne({ name: '楚子航' }).then(res => { console.log(res.toJSON()); })
toObject()
: 将document
对象转换为一个普通的JS对象- 转换为普通的
js
对象以后, 注意所有的Document
对象的方法或属性都不能使用了
// toObject() stuModel.findOne({ name: '楚子航' }).then(res => { console.log(res.toObject()); })
这篇关于MongoDB学习笔记三 - Mongoose API的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站