在nodejs中使用mongodb

  1. 使用官方的mongodb包来操作

    https://github.com/mongodb/node-mongodb-native

  2. 使用第三方包mongoose

    • 基于官方mongodb包进行的封装

    • 地址

      https://mongoosejs.com/

    • 使用:

      • 安装mongoose

        npm install --save mongoose
        
      • 使用

      const mongoose = require('mongoose');
      
      // 引入Schema
      const schema = mongoose.Schema;
      
      // 连接数据库 如果没有该数据库,当插入数据的时候会自动创建
      mongoose.connect('mongodb://localhost:27017/myTest',{useUnifiedTopology: true,useNewUrlParser: true});
      
      // 构建集合结构,类似于关系数据库的表结构
      // 目的:增加约束,以保证数据地完整性,避免脏数据
      const carSchema = new schema({
          uname: {
              type: String,
              required: true // 该字段不为空
          },
          age: {
              type: Number
          }
      })
      
      /**
       * 将文档结构发布为模型
       * 第一个参数:传入一个大写名词单数用来表示数据库名词,而mongoose会自动将大写名词的字符串生成小写复数的集合名词
       *              比如:Cat=>cats
       * 第二个参数:架构Schema
       * 返回值:模型构造函数
       */
      const Cat = mongoose.model('Cat',carSchema);
      
      // 利用模型构造函数,构建数据(需要按照Schema结构构建,否则运行时会报错)(只能插入一个)
      const ki = new Cat({uname: 'zzzttt'});
      
      // 保存到数据库中 保存成功调用回调函数
      ki.save().then(() => {
          console.log('saved!');
      })
      

CRUD Operations

  • 查询数据

    基于上面创建的Cat模型进行使用

    • 查询所有数据

      // 查询所有数据,返回值为数组,没有查找则为空数组
      // 第一个参数为出错信息
      // 第二个参数为查询结果
      Cat.find((err,ret) => {
          if (!err) {
              console.log(ret);
          }
      })
      
    • 按条件查询

      // 按条件查询 返回所有符合条件的数据
      Cat.find({
          uname: 'zzzttt'
      },(err,ret) => {
          if (!err) {
              console.log(ret);
          }
      })
      
      // 按条件查 返回第一个符合条件的数据,返回值为对象,如何没有找到则返回null
      // 如果不传入条件,则返回第一条数据
      Cat.findOne({
          uname: 'zzzttt'
      },(err,ret) => {
          if (!err) {
              console.log(ret);
          }
      })
      
    • 删除数据

      // 删除数据 用法与find类似
      Cat.remove({
          uname: 'zzzttt'
      },(err,ret) => {
          if (!err) {
              console.log('delete sucess!');
          }
      })
      
      // 删除满足条件的一个数据
      Cat.deleteOne({
          uname:'ji'
      },() => {
          console.log('delete success!')
      })
      
    • 更新数据

      // 更新第一条满足要求的数据,第一个参数表示条件,第二个参数表示更新内容,第三个参数是选项默认Null,第四个参数是更新成功的回调函数
      Cat.updateOne({
          uname:'ji'
      },{
          age: 19
      },null,() => {
          console.log('sucess');
      })
      
      // updateMany则是更新所有满足条件的数据,用法与updateOne类似
      
      // 通过id更新数据 id是自生成的id号
      Cat.findByIdAndUpdate(id, update, options, callback) // executes
      Cat.findByIdAndUpdate(id, update, options)  // returns Query
      Cat.findByIdAndUpdate(id, update, callback) // executes
      Cat.findByIdAndUpdate(id, update)           // returns Query
      Cat.findByIdAndUpdate()
      

来源:https://www.icode9.com/content-2-894751.html

(0)

相关推荐