node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)

文章目录


前言

(1)问题:安装的mongoose 库版本不应该过高导致的问题

比如我默认安装8.0的版本就会报下面的错误

throw new MongooseError('Model.create() no longer accepts a callback'); MongooseError: Model.create() no longer accepts a callback

(2)重新安装低版本

base 复制代码
npm i mongoose@6.8.0

package.json 如下图


一、插入文档

1. 代码

javascript 复制代码
// 1:安装并导入mongoose
const  mongoose = require('mongoose')


mongoose.set('strictQuery', true); // 解决终端警告的问题
// 2: 连接 mongodb 服务
// mongodb: 表示mongodb 服务,而不是http服务
// 27017 表示端口号
// test 表示数据库名
mongoose.connect('mongodb://127.0.0.1:27017/test')

// 3:设置回调
// 3.1 设置连接成功的回调
// 设置连接成功的回调: once 事件回调函数只执行一次
mongoose.connection.once('open', () => {
    console.log('连接成功');
    // 4:创建文档的结构对象
    // 设置集合中文档的属性以及属性值的类型
    let userSchema = new mongoose.Schema({
        name: String,
        age: Number,
        sex: String
    })
    // 5:创建模型对象   对文档操作的封装对象
    let userModel = mongoose.model("user", userSchema)

    // 6: 新增
    userModel.create({
        name: '张三',
        age: 18,
        sex: '男'
    }, function (err, data){
        // err 判断是否有错误
        if (err) {
            console.log(err)
            return;
        } 
        console.log(data);
        // 7:关闭数据库链接(实际项目中不会添加该代码)
        mongoose.disconnect();
    })
})
// 3.2 设置连接错误的回调
mongoose.connection.on('error', () => {
    console.log('连接错误');
})
// 3.3 设置连接关闭的回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
})

2. node终端效果

3. 使用mongo.exe查询数据库的内容

4:注意点

为什么创建的集合名和在mongo.exe中查询的名字不一样呢?

二、删除文档

1. 删除一条

deleteOne 删除一条数据的方法

2. 批量删除

delectMany 批量删除数据的方法

3. 代码

javascript 复制代码
// 1:安装并导入mongoose
const  mongoose = require('mongoose')


mongoose.set('strictQuery', true); // 解决终端警告的问题
// 2: 连接 mongodb 服务
// mongodb: 表示mongodb 服务,而不是http服务
// 27017 表示端口号
// test 表示数据库名
mongoose.connect('mongodb://127.0.0.1:27017/test')

// 3:设置回调
// 3.1 设置连接成功的回调
// 设置连接成功的回调: once 事件回调函数只执行一次
mongoose.connection.once('open', () => {
    console.log('连接成功');
    // 4:创建文档的结构对象
    // 设置集合中文档的属性以及属性值的类型
    let userSchema = new mongoose.Schema({
        name: String,
        age: Number,
        sex: String
    })
    // 5:创建模型对象   对文档操作的封装对象
    let userModel = mongoose.model("user", userSchema)

    // 6: 删除一条
    // userModel.deleteOne({ _id: '654cf280d53122b083bea83f' }, (err, data) => {
    //     // err 判断是否有错误
    //     if (err) {
    //         console.log('删除失败', err)
    //         return;
    //     } 
    //     console.log(data);
    // })
    
    // 7:批量删除
    // 删除性别为男的所有数据
    userModel.deleteMany({ sex: '男' }, (err, data) => {
        // err 判断是否有错误
        if (err) {
            console.log('删除失败', err)
            return;
        } 
        console.log(data);
    })
})
// 3.2 设置连接错误的回调
mongoose.connection.on('error', () => {
    console.log('连接错误');
})
// 3.3 设置连接关闭的回调
mongoose.connection.on('close', () => {
    console.log('连接关闭');
})

三、修改文档

和删除一样,不过多描述,记住方法即可

updateOne 修改一条

updateMany 批量修改

1. 修改一条

2. 批量修改

四、查看文档

注意查看所有和删除和更新不一样,查询所有的方法是find。后面是没有Many的

findOne 查看一条
find 查看所有 (不是findMany)第一个参数不加就返回所有数据,加上就返回符合条件的所有数据。

1. 查看一条(findOne)

2. 查看所有(find )

(1)查看所有符合条件的数据

(2)查看所有数据

相关推荐
Sst的头号粉丝8 分钟前
轻量级博客搭建
数据库
用户62799471826210 分钟前
南大通用GBase 8c数据库权限管理场景实践
数据库
八月瓜科技10 分钟前
擎策·知海全球专利数据库 专业专利检索赋能 规避无效研发提效创新
大数据·数据库·人工智能·科技·aigc
2401_8331977312 分钟前
更优雅的测试:Pytest框架入门
jvm·数据库·python
倔强的石头_19 分钟前
Oracle 迁移 TCO 深度拆解:从隐性运维成本陷阱到全栈工具链破局
数据库
2501_9249526926 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
2401_8914821729 分钟前
Python多线程与多进程:如何选择?(GIL全局解释器锁详解)
jvm·数据库·python
Predestination王瀞潞29 分钟前
6.3.1 软件->W3C XPath 1.0 标准(W3C Recommendation):XPath(XML Path Language)查询语言
xml·数据库·oracle
2401_8512729929 分钟前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
快乐柠檬不快乐36 分钟前
Java连接电科金仓数据库(KingbaseES)实战指南
java·开发语言·数据库