专栏名称: 似朝朝我心
一个慢慢学习前端的小pan,路漫漫其修远兮,...
目录
相关文章推荐
51好读  ›  专栏  ›  似朝朝我心

Mongoose中的Document方法

似朝朝我心  · 简书  ·  · 2020-10-31 17:23

正文

Mongoose中的Document对象和MongoDB数据库集合中的文档一一对应,上一章我们得知,Document是Model的实例,通过Model查询的结果都是Document.

所以我们是可以凭空创建一个Document,而不是再使用Model的方法来增删改查文档。

首先准备前面依赖的部分。

const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect('mongodb://127.0.0.1:27017/mytest', {useNewUrlParser: true, useUnifiedTopology: true})
mongoose.connection.once("open", () => {
    console.log(`数据库已连接成功,Server is running at:http://127.0.0.1:27017`)
})

//创建一个Schema对象
const stuSchema = new Schema({
    name: String, 
    age: Number,
    gender: {
        type: String,
        default: "female"
    },
    address: String
  });

//创建一个Model对象
const stuModel = mongoose.model('students', stuSchema);

创建一个Document,创建完成后,并不会立即生效插入到数据库当中。

const stu =  new stuModel({
    name: "小雪",
    age: 21,
    gender: "female",
    address: "日月湾"
})
console.log(stu)

想要上面的代码生效,插入到数据库当中,需要额外执行Document的save()方法。

Model#save([options], [fn])

stu.save(err => {
    if (!err) {//如果没有报错
        console.log('保存成功!')
    }
})

用Node执行代码


打开数据库的可视化工具,查看,发现数据保存成功。


Document对象其余常见方法(有些已经被废弃掉,自己斟酌使用)。

updateOne(update, [options], [callback])

比如我们想修改小红的年龄。



代码如下:

stuModel.findOne({name: "小红"}, (err, doc) => {
    if (!err) {
        doc.updateOne({$set: {age: 28}}, err => {
            if (!err) {
                console.log('修改成功')
            }
        })
    }
})

执行代码:



查看数据库。



还有一种更加直接的改法。
stuModel.findOne({name: "小红"}, (err, doc) => {
    if (!err) {
        doc.age = 18
        doc.save()
        console.log('数据保存成功!')
    }
})

实现的效果是一样的。


deleteOne( [callback])方法

我们删除小红的数据。







请到「今天看啥」查看全文