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条