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条
