Use mongodb in nodejs

  1. Use the official mongodbpackage to operate

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

  2. Use third-party packagesmongoose

    • mongodbPackaging based on official packages

    • address

      https://mongoosejs.com/

    • use:

      • Install mongoose

        npm install --save mongoose
        
      • use

      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

  • Query data

    Use it based on the Cat model created above

    • Query all data

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

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

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

      // 更新第一条满足要求的数据,第一个参数表示条件,第二个参数表示更新内容,第三个参数是选项默认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()   
      

Guess you like

Origin blog.csdn.net/chen__cheng/article/details/114922649