美文网首页
11.MongoDB 在 node.js 运用

11.MongoDB 在 node.js 运用

作者: 璎珞纨澜 | 来源:发表于2019-04-15 15:21 被阅读0次

在 Node 中如何操作 MongoDB 数据

  1. 使用官方的 mongodb 包来操作:
  1. 使用第三方 mongoose 来操作 MongoDB 数据库
安装 mongoose 到项目目录
  • 将 mongoose 官网的 Demo 试验一下:
const mongoose = require('mongoose');

// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});

// 创建一个模型,就是在设计数据库
const Cat = mongoose.model('Cat', { name: String });

// 实例化一个 Cat
const kitty = new Cat({ name: 'Zildjian' });

// 持久化保存 Kitty 实例
kitty.save().then(() => console.log('meow'));
执行 node 与确认 MongoDB 执行结果

MongoDB 数据库的基本概念

  • 可以有多个数据库
  • 一个数据库可以有多个集合
  • 一个集合可以有多个文档(表记录)
  • 文档结构很灵活,没有任何限制
  • MongoDB 非常灵活,不需要像 MySQL 一样线创建数据库、表、设计表结构
    • 当你插入数据的时候,只需要指定哪个数据库的哪个集合操作就可以了
    • 一切都有 MongoDB 来自动完成

设计 Schema 发布 Model

  1. 连接数据库
    指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
  2. 设计文档结构(表结构)
    字段名称就是表结构中的属性名称
    约束的目的是为了保证数据的完整性,不要有脏数据
  3. 将文档结构发布为模型
    mongoose.model 方法就是用来将一个架构发布为 model
  • 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
    mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
    例如这里的 Student 最终会变为 students 集合名称
  • 第二个参数:架构 Schema
  • 返回值:模型构造函数
  1. 当我们有了模型构造函数之后,就可以使用这个构造函数对 students 集合中的数据进行增删改查
var mongoose = require('mongoose')

// 1. 连接数据库
mongoose.connect('mongodb://localhost:27017/test')

var Schema = mongoose.Schema

// 2. 设计文档结构(表结构)
var studentSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    gender: {
        type: Number,
        enum: [0, 1],
        default: 0
    },
    age: {
        type: Number
    },
    major: {
        type: String
    }
})

// 3. 将文档结构发布为模型
module.exports = mongoose.model('Student', studentSchema)

增删改查 API

增加数据

var students= new Student({
     name: '张三',
     gender: 1,
     age: 20
     major: '英语'
})

student1.save(function (err,ret) {
    if (err) {
        console.log('保存失败')
    } else {
        console.log('保存成功')
        console.log(ret)
    }
})

查询数据

查询所有

Student.find(function (err, ret) {
    if (err) {
        console.log('查询失败')
    } else {
        console.log(ret)
    }
})

按条件查询

Student.find({
    name: '张三'
}, function (err, ret) {
    if (err) {
        console.log('查询失败')
    } else {
        console.log(ret)
    }
}) // => Model.find() 方法得到的是数组,查不到则为空数组

按条件查询单个

Student.findOne({
    name: '张三'
}, function (err, ret) {
    if (err) {
        console.log('查询失败')
    } else {
        console.log(ret)
    }
}) // => Model.findOne() 方法得到的是对象,查询第一个,查不到则为null

删除数据

根据条件删除所有:

Student.remove({
    name: '张三'
}, function (err, ret) {
    if (err) {
        console.log('删除失败')
    } else {
        console.log('删除成功')
        console.log(ret)
    }
})

根据条件删除一个:

Model.findOneAndRemove(conditions, [options], [callback])

根据 id 删除一个:

Model.findByIdAndRemove(id, [options], [callback])

更新数据

根据条件更新所有:

Model.update(conditions, doc, [options], [callback])

根据条件更新一个:

Model.findOneAndUpdate([conditions], [update], [options], [callback])

根据 id 更新一个:

Student.findByIdAndUpdate('5cb044f8cd97683690b97be7', {
    age: 21
}, function (err, ret) {
    if (err) {
        console.log('更新失败')
    } else {
        console.log('更新成功')
        console.log(ret)
    }
})

相关文章

网友评论

      本文标题:11.MongoDB 在 node.js 运用

      本文链接:https://www.haomeiwen.com/subject/hizziqtx.html