当前位置: 首页 > java >正文

mongoose插入文档,字段类型, 字段验证, 删除文档,更新文档,读取文档,查询文档的条件控制 ,字段筛选,数据排序,数据截取

、Mongoose 中与 文档操作(插入、查询、更新、删除)及其相关功能(字段类型、验证、条件筛选、排序、分页等)相关示例:


📋 一、字段类型定义(Schema Types)

const mongoose = require('mongoose')const userSchema = new mongoose.Schema({name: { type: String, required: true },           // 字符串,必须填age: { type: Number, min: 0, max: 120 },           // 数字,限定范围email: { type: String, unique: true },            // 字符串,唯一createdAt: { type: Date, default: Date.now },     // 日期,默认值isActive: { type: Boolean, default: true }        // 布尔值
})const User = mongoose.model('User', userSchema)

📝 二、插入文档

1. 插入一个文档

User.create({ name: 'Tom', age: 25, email: 'tom@example.com' })

2. 批量插入

User.insertMany([{ name: 'Alice', age: 30, email: 'alice@example.com' },{ name: 'Bob', age: 22, email: 'bob@example.com' }
])

🔍 三、读取/查询文档

1. 查询全部

User.find()

2. 条件查询(条件控制)

User.find({ age: { $gte: 20, $lte: 30 }, isActive: true })

常用条件控制操作符:

  • $gt:大于
  • $lt:小于
  • $gte:大于等于
  • $lte:小于等于
  • $ne:不等于
  • $in:包含在数组中
  • $or:或条件
User.find({ $or: [ { age: { $lt: 20 } }, { isActive: false } ] })

🎯 四、字段筛选(只返回部分字段)

User.find({}, 'name email')        // 只返回 name 和 email 字段
User.find().select('name -_id')    // 返回 name 字段,不返回 _id

🔃 五、更新文档

1. 更新一个文档

User.updateOne({ name: 'Tom' }, { $set: { age: 26 } })

2. 更新多个文档

User.updateMany({ isActive: false }, { $set: { isActive: true } })

3. findOneAndUpdate(返回更新前的文档)

User.findOneAndUpdate({ email: 'tom@example.com' },{ $set: { age: 27 } },{ new: true } // 返回更新后的文档
)

❌ 六、删除文档

1. 删除一个

User.deleteOne({ name: 'Bob' })

2. 删除多个

User.deleteMany({ isActive: false })

🔢 七、排序、截取(分页)

1. 排序

User.find().sort({ age: -1 })  // 按 age 倒序(-1),升序为 1

2. 跳过前 N 条(skip)+ 取 N 条(limit)

User.find().skip(10).limit(5)  // 第 11~15 条

✅ 示例组合:分页 + 条件 + 筛选 + 排序

User.find({ age: { $gt: 18 } })     // 条件.select('name age -_id')          // 字段筛选.sort({ age: 1 })                 // 排序.skip(0)                          // 分页开始.limit(10)                        // 每页10条

http://www.xdnf.cn/news/2947.html

相关文章:

  • [Linux网络_68] 转发 | 路由(Hop by Hop) | IP的分片和组装
  • 住宅代理IP购买指南:保护您的网络行为
  • C++:Lambda表达式
  • YOLO学习笔记 | YOLOv8与卡尔曼滤波实现目标跟踪与预测(附代码)
  • JVM GC垃圾回收算法
  • 面试手撕——快速排序
  • 高翔视觉slam中常见的OpenCV和Eigen的几种数据类型的内存布局及分配方式详解
  • 【AlphaFold2】Feature extraction:提取特征,为模型输入做准备|Datapipeline讲解
  • 【AI微信小程序开发】掷骰子小程序项目代码:自设骰子数量和动画(含完整前端代码)
  • 为网页LOGO视频增加电影质感表现
  • AbortController 取消请求
  • Lucene 分词工具全解析与对比指南
  • PDF Shaper v15.0
  • AI工具的应用体验---------一键生成个人的微信名片
  • Linux Vim 使用 显示行号、替换、查找、多文件打开等骚操作
  • 双重差分模型学习笔记(理论)
  • Vue2 相关知识点整理
  • 从技术视角解析百度文库AI的核心竞争力与行业启示
  • 【统计方法】交叉验证:Resampling, nested 交叉验证等策略 【含R语言】
  • 非凸科技受邀出席AI SPARK活动,共探生成式AI驱动金融新生态
  • Vue3 Echarts 3D圆形柱状图实现教程以及封装一个可复用的组件
  • 高效 Transformer 的综述
  • AGILE:开启LLM Agent强化学习的创新框架
  • CSdiy java 06
  • Spark,集群搭建-Standalone
  • 小结:PKI(Public Key Infrastructure,公钥基础设施)
  • Python爬虫(10)Python数据存储实战:基于pymongo的MongoDB开发深度指南
  • npm打包内存不足- JavaScript heap out of memory
  • SQLMesh增量模型实战指南:时间范围分区
  • 对比测评:为什么AI编程工具需要 Rules 能力?