Mongoose查增改删
- 在
src目录下新建一个文件夹models,用来存放数据模型和操作数据库的方法。 - 在
models目录下新建一个文件user.js,用来管理用户信息相关的数据库操作。 - 相关的数据模型和数据库操作方法,最后通过
module.exports暴露出去。
mongoose版本8.0.0
1-创建结构
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema(
{
id: {
type: Number,
index: true,
unique: true,
},
name: String,
},
{
versionKey: false, // 设置false,存取数据就不会带版本id
}
);
2-创建模型
const User = mongoose.model("user", userSchema);
3-查增改删
查
批量查询Model.find()
Model.find(filter [, projection] [, options])
await User.find({ name: 'kaka' }, 'name phone'); // 字段前加'-'表示不返回的字段
await User.find({}, { name: 1, phone: 1 }); // 1-要返回的字段 0-不返回的字段
- filter:过滤项。
- projection:<Object|String|Array[String]>要返回的可选字段。
- options:配置项,参见Query - Mongoose 中文网 (nodejs.cn)。
可以包在函数里,最后通过
module.exports把函数暴露出去。// 查
function FindUserList() {
return User.find();
}
单个查询Model.findOne()
Model.findOne([conditions] [, projection] [, options])
await User.findOne({ id: 1 }, { name: 1, id: 1 });
- conditions:查询条件。
- projection:<Object|String|Array[String]>要返回的可选字段。
- options:配置项,参见Query - Mongoose 中文网 (nodejs.cn)。
增
新增文档Model.create()
Model.create(docs [, options])
await User.create({ name: 'gaga' });
await User.create([{ name: 'mama' }, { name: 'nana' }]);
- docs:<Array|Object>要插入的文档。
- options:配置项,参见Model - Mongoose 中文网 (nodejs.cn)
改
修改文档Model.findOneAndUpdate()
Model.findOneAndUpdate([conditions] [, update] [, options])
const options = {
new: true,
strict: true,
};
await User.findOneAndUpdate({ id: 1 }, { id: 1, name: 'newName' }, options);
- conditions:查询条件。
- update:新的文档。
- options:配置项,参见Model - Mongoose 中文网 (nodejs.cn)
options.strict:覆盖模式的严格模式选项(默认启用),可确保传递给模型构造函数的、结构中未指定的值不会保存到数据库中。options.upsert:默认为false。如果为true,并且没有找到文档,则插入新文档。options.projection:可选字段返回。- options.new:默认为
false。如果为true,则返回修改后的文档,而不是原始文档。
删
删除文档Model.findOneAndDelete()
Model.findOneAndDelete(conditions [, options])
await User.findOneAndDelete({ id: 1 });
- conditions:查询条件。
- options:配置项,参见Query - Mongoose 中文网 (nodejs.cn)
options.strict:覆盖模式的严格模式选项(默认启用)。options.projection:可选字段返回。options.session:与此查询关联的会话,参见事务 - Mongoose 中文网 (nodejs.cn)。
完整代码
// src/models/user.js
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema(
{
id: {
type: Number,
index: true,
unique: true,
},
name: String,
},
{
versionKey: false,
}
);
const User = mongoose.model("user", userSchema);
// 查-列表
function FindUserList() {
return User.find();
}
// 查
function FindUser(id) {
return User.findOne({ id });
}
// 改
function UpdateUser(id, update) {
const options = {
new: true,
strict: true,
};
return User.findOneAndUpdate({ id }, update, options);
}
// 增
function AddUser(user) {
return User.create(user);
}
// 删
function DeleteUser(id) {
return User.findOneAndDelete({ id });
}
module.exports = {
User,
FindUserList,
FindUser,
UpdateUser,
AddUser,
DeleteUser,
};
Mongoose查增改删的更多相关文章
- DataFrame查增改删
DataFrame查增改删 查 Read 类list/ndarray数据访问方式 dates = pd.date_range(',periods=10) dates df = pd.DataFrame ...
- XML简单的增改删操作
XML文件的简单增改删,每一个都可以单独拿出来使用. 新创建XML文件,<?xmlversion="1.0"encoding="utf-8"?> & ...
- js 属性增改删操作
js 属性增改删操作,可参看菜鸟教程,这里记录一个小问题:disabled属性 使用setAttribute操作无法 禁用disabled属性,需使用removeAttribute操作,原因是只要有d ...
- mongoose 实现 增、删、改、查
mongoose常用的API 增 save是一个实例方法,使用时需要先 new Model() 来实例化 //保存一个用户信息,userobj为你创建的文档对象模型里的字段,需正确对应传入 const ...
- python数据类型—列表(增改删查,统计,取值,排序)
列表是最常用的数据类型之一,通过列表可以对数据实现方便的存储,修改等操作. 先声明一个空列表: >>> names = [] >>> names [] 可以存多个值 ...
- oracle函数自治事务解决不能增改删的语句操作
CREATE OR REPLACE FUNCTION SEQ3 (v_bname in VARCHAR2) return NUMBER is pragma autonomous_transaction ...
- EF6增改删等常用基类
using System; using System.Linq; using System.Threading.Tasks; using System.Linq.Expressions; using ...
- WPF中DataGrid的应用-绑定,增改删,分页,样式
参考以下网址: http://www.cnblogs.com/fwbnet/archive/2012/05/08/2490974.html
- Linq To Sql 增改删
using System; using System.Data.Linq.Mapping; namespace ConsoleApplication3 { [Table(Name = "te ...
- MongoDB 基本操作(增改删)
1.插入数据 和关系型数据库一样,增加数据记录可以使用insert语句,这是很简单的. 当插入数据时,如果此集合不存在,则MongoDB系统会自动创建一个集合,即不需要刻意预先创建集合 每次插入数据时 ...
随机推荐
- [故障处理]nfs导致系统负载异常
目录 情况 排查 原因 解决 情况 某台虚拟机服务器系统负载极高,但是cpu.内存.IO都正常.home目录下无法使用ls,也无法使用 df -h. 排查 top看cpu和内存,正常. iotop看i ...
- AVR汇编(二):AVR架构介绍
AVR汇编(二):AVR架构介绍 ATmega328P介绍 ATmega328P是Atmel公司(现Microchip公司)推出的一个基于AVR架构的高性能低功耗单片机,拥有32KB的Flash.1K ...
- 在Python中使用LooseVersion进行软件版本号比对
技术背景 Python是一门极其热门.极其灵活的开发语言,其更新迭代的速度也非常的快速.有时候我们遇到不同的软件版本不同方法处理的情况,此时就需要用到版本号比对的工具.举一个例子说,我们要在pytho ...
- Redhat 8.2 系统语言切换(英文转中文)
前提条件 确保已连上网,并且配好 yum 源 若未配好 yum 源 可参考我上一篇文章 部分 Linux 换国内源 操作步骤 安装中文语言包 dnf install glibc-langpack-zh ...
- 使用MediatR实现CQRS
CQRS和中介者模式 MediatR库主要是为了帮助开发者快速实现两种软件架构模式:CQRS和Mediator.这两种架构模式看上去似乎差不多,但还是有很多区别的. CQRS CQRS是Command ...
- Python实现商城购物经典案例
代码分步骤思路: 商城添加商品:opea_db = [{'store_name': '手机','num': 1}] while True: store_name=input('请输入需要存放的商品(按 ...
- Avalonia 实现聊天消息渲染、图文混排(支持Windows、Linux、信创国产OS)
在实现即时通讯软件或聊天软件时,渲染文字表情.图文混排是一项非常繁琐的工作,再加上还要支持GIF动图.引用消息.撤回消息.名片等不同样式的消息渲染时,就更加麻烦了. 好在我们可以使用 ESFra ...
- 《SQL与数据库基础》14. 存储过程 · 存储函数
目录 存储过程 基本语法 变量 系统变量 用户定义变量 局部变量 if判断 参数 case判断 while循环 repeat循环 loop循环 游标 条件处理程序 存储函数 本文以 MySQL 为例 ...
- 《SQL与数据库基础》06. 函数
目录 函数 字符串函数 数值函数 日期函数 流程函数 本文以 MySQL 为例 函数 函数是指一段可以直接被另一段程序调用的程序或代码. 要查看函数操作的结果,可以使用 SELECT 函数(参数); ...
- 算术逻辑单元的实现(ALU)
一.实验目的 掌握Vivado集成开发环境 掌握Verilog语言基本知识. 掌握并理解算术逻辑单元ALU的原理和设计 二.实验预习 1.ALU(算术逻辑单元)的16种运算的编码 三.模块接口设计 A ...