nodejs服务器操作MongoDB数据库

引入 mongoose 插件

指令安装:npm instll mongoose
这个模块负责操作 mongodb 数据库 负责定义哪些字段

var mongoose = require("mongoose");

1. 连接数据库

参数:1.数据库的服务器地址 2.数据库的参数配置 3.数据库的回调函数

mongoose.connect(
    "mongodb://localhost:27017/mondb",
    {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    },
    function(err) {
        if (err) {
            console.log("数据库连接失败");
        }
        console.log("数据库连接成功");
    }
);

2.创建 schema 对象,定义各种字段,及字段类型

如果类型首字母大写,不用加引号;如果首字母是小写,需要加引号;

let userSchema = new mongoose.Schema({
    name: String,
    age: "number",
    address: {
        type: String, // 字段类型
        default: "未知", // 字段默认值
    },
    other: {
        type: Array, // 数组类型的字段
        default: ["男", "待业"],
    },
    info: {
        type: Object, // 对象类型的字段
        default: {
        title: "现居住郑州",
        },
    },
});

3. 创建 model 对象, 相当于创建表 users:表名

let userModel = mongoose.model("users", userSchema);

4. 数据的处理

数据写入

  • 单条数据写入

    let u1 = new userModel({
        name: "张三",
        age: 23,
    });//根据 model 对象,创建数据(Document)
    
    u1.save(function(err) {
        if (!err) console.log("数据保存成功");
    });//将 u1 这条数据保存到 users 表中
    
  • 数据批量写入

    let arr = [
        { name: "李四", age: 20, address: "郑州" },
        { name: "王思", age: 30, address: "洛阳" },
    ];
    userModel.insertMany(arr, function(err) {
        if (!err) console.log("数据保存成功");
    });
    

查询数据

  • 查询单条数据

    // 第一种写法
    userModel.find({ name: "张三", age: 23 }, function(err, data) {
        if (!err) console.log(data);//data 查询成功返回的数据
        else console.log(err);//err 返回查询是否出错
    });
    
    // 第二种写法
    userModel.find({ name: "张三", age: 23 }).exec(function(err, data) {
        if (!err) console.log(data);//data 查询成功返回的数据
        else console.log(err);//err 返回查询是否出错
    });
    
  • 查询多条数据

    find()支持正则表达式查询

    find({},{name:1}) 第一个参数为空,表示查询所有数据,第二个参数表示只查询显示 name 字段的值,默认 id 显示,值为:(_id:0)不显示 id

    sort() 排序函数,字段为-1 是降序,字段为 1 是正序

      userModel.find().sort({ age: -1 }).exec(function(err, data) {
          if (!err) console.log(data);
          else console.log(err);
      });
    
  • 分页查询

    skip(参数):起始的数据索引值, limit(参数):查询的数据个数

    userModel.find().skip(0).limit(1).exec(function(err, data) {
        if (!err) console.log(data);
        else console.log(err);
    });
    
    

修改数据

  • 修改单条数据

    updateOne({条件},{$set:{需要更新的值}})

      userModel.updateOne({ name: /^张/ }, { $set: { age: 50, address: "北京市" } }).exec(function(err, data) {
          if (!err) console.log("修改成功");
          else console.log(err);
      });
    
  • 批量修改数据

        userModel.updateMany({ name: /^张/ },{$set:{age:50,address: "北京市"}}).exec(function(err, data){
          if (!err) console.log("修改成功");
          else console.log(err);
        });
    

删除数据

  • 删除单条数据

    userModel.deleteOne({ name: /^张/ }).exec(function(err, data) {
       if (!err) console.log("删除成功");
       else console.log(err);
    });
    
  • 删除多条数据

    userModel.deleteMany({ name: /^张/ }).exec(function(err, data) {
        if (!err) console.log("删除成功");
        else console.log(err);
    });
    
posted @ 2020-12-03 21:39  云鹤^  阅读(198)  评论(0)    收藏  举报