Mongoose查增改删

  • src目录下新建一个文件夹models,用来存放数据模型和操作数据库的方法。
  • models目录下新建一个文件user.js,用来管理用户信息相关的数据库操作。
  • 相关的数据模型和数据库操作方法,最后通过module.exports暴露出去。

mongoose版本8.0.0

1-创建结构

jsx 复制代码
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema(
    {
        id: {
            type: Number,
            index: true,
            unique: true,
        },
        name: String,
    },
    {
        versionKey: false, // 设置false,存取数据就不会带版本id
    }
);

2-创建模型

jsx 复制代码
const User = mongoose.model("user", userSchema);

3-查增改删

批量查询Model.find()

jsx 复制代码
Model.find(filter [, projection] [, options])

await User.find({ name: 'kaka' }, 'name phone'); // 字段前加'-'表示不返回的字段
await User.find({}, { name: 1, phone: 1 }); // 1-要返回的字段 0-不返回的字段

可以包在函数里,最后通过module.exports把函数暴露出去。

jsx 复制代码
// 查
function FindUserList() {
    return User.find();
}

单个查询**Model.findOne()**

jsx 复制代码
Model.findOne([conditions] [, projection] [, options])

await User.findOne({ id: 1 }, { name: 1, id: 1 });

新增文档**Model.create()**

jsx 复制代码
Model.create(docs [, options])

await User.create({ name: 'gaga' });
await User.create([{ name: 'mama' }, { name: 'nana' }]);

修改文档**Model.findOneAndUpdate()**

jsx 复制代码
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()**

jsx 复制代码
Model.findOneAndDelete(conditions [, options])

await User.findOneAndDelete({ id: 1 });

完整代码

jsx 复制代码
// 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,
};
相关推荐
ziyu_jia3 天前
MongoDB、Mongoose使用教程
前端·数据库·mongodb·node.js·mongoose
花姐夫Jun15 天前
node.js基础学习-mongoose操作MongoDB(十二)
学习·mongodb·node.js·mongoose
云牧9 个月前
使用 Mongoose 在 Node 和 Nest 中操作 MongoDB 数据库
前端·node.js·mongoose
耶耶耶耶耶~10 个月前
mongoose httpserver浅析
网络·mongoose·网络通讯·httpserver
耶耶耶耶耶~10 个月前
mongoose httpserver webcommand
网络·mongoose·httpserver
慕仲卿1 年前
Mongoose 使用简介
node.js·mongoose
SuppperSA1 年前
node.js mongoose index(索引)
mongodb·node.js·mongoose
SuppperSA1 年前
node.js mongoose schemaTypes
mongodb·node.js·mongoose
SuppperSA1 年前
node.js mongoose middleware
mongodb·中间件·mongoose