MongoDB数据库的基本操作方法

1.连接数据库

  1. 首先引入mongoose模块
  2. 使用mongoose.connect进行连接 如果是本地就填写"mongodb://localhost 后面的内容是你创建集合的名称
    如果这个数据库中有这个集合就连接 如果没有就创建
  3. { useNewUrlParser: true,
    useUnifiedTopology: true, } 这个东西是新版的话可以填写 不妨碍连接
const mongoose = require("mongoose");
mongoose
  .connect("mongodb://localhost/xx", {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(() => console.log("数据库连接成功"))
  .catch((err) => console.log("数据库连接失败", err));

2.创建集合

1.首先创建集合规则
2.告诉数据库你创建的规则
3.就可以向数据库写入

//创建集合
//1.创建集合的规则  有哪些属性   值的类型
const rule = new mongoose.Schema({
  name: String,
  age: Number,
  sex: String,
});
//2. 将创建的规则让数据库去承认
const Information = mongoose.model("Information", rule); // informations
// 3.根据规则写入数据  创建文档
Information.create(
  {
    name: "mm",
    age: 25,
    sex: "女",
  },
  (err, result) => {
    //err 是错误信息
    console.log(err);
    //result 是插入数据的信息
    console.log(result);
  }
);

3.数据库的删改查

1.删

//查找出来并且删除  删除第一个符合的文档
// User.findOneAndDelete({ _id: "5c09f2d9aeb04b22f846096b" }).then((result) =>
//   console.log(result)
// );

//删除多个文档  括号里填写范围  如果括号为空代表全部删除
User.deleteMany({ name: "李四" }).then((result) => console.log(result));

2.改
前面的是范围 后面是更新的内容

//更新一个文档
User.updateOne({ name: "张三" }, { name: "cx", age: "18" }).then((result) =>
  console.log(result)
);
//更新多个文档
User.updateMany(
  //$gt 大于   $lt小于
  { age: { $gt: 15, $lt: 35 } },
  { name: "many", age: "99" }
).then((result) => console.log(result));

3.查

// 查询用户集合中的所有文档
// User.find().then(result => console.log(result));
// 通过_id字段查找文档
// User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result))

// findOne方法返回一条文档 默认返回当前集合中的第一条文档
// User.findOne({name: '李四'}).then(result => console.log(result))

// 查询用户集合中年龄字段大于20并且小于40的文档  $gt 大于   $lt小于
// User.find({age: {$gt: 20, $lt: 40}}).then(result => console.log(result))

// 查询用户集合中hobbies字段值包含足球的文档
// User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result))

// 选择要查询的字段
// User.find().select('name email -_id').then(result => console.log(result))

// 根据年龄字段进行升序排列
// User.find().sort('age').then(result => console.log(result))

// 根据年龄字段进行降序排列
// User.find().sort('-age').then(result => console.log(result))

// 查询文档跳过前两条结果 限制显示3条结果  skip跳过多少  limit限制显示多少

4.集合规则的规范

const postSchema = new mongoose.Schema({
  title: {
    type: String,
    // 必选字段
    required: [true, "请传入文章标题"],
    // 字符串的最小长度
    minlength: [2, "文章长度不能小于2"],
    // 字符串的最大长度
    maxlength: [5, "文章长度最大不能超过5"],
    // 去除字符串两边的空格
    trim: true,
  },
  age: {
    type: Number,
    // 数字的最小范围
    min: 18,
    // 数字的最大范围
    max: 100,
  },
  publishDate: {
    type: Date,
    // 默认值
    default: Date.now,
  },
  category: {
    type: String,
    // 枚举 列举出当前字段可以拥有的值
    enum: {
      values: ["html", "css", "javascript", "node.js"],
      message: "分类名称要在一定的范围内才可以",
    },
  },
  author: {
    type: String,
    validate: {
      validator: (v) => {
        // 返回布尔值
        // true 验证成功
        // false 验证失败
        // v 要验证的值
        return v && v.length > 4;
      },
      // 自定义错误信息
      message: "传入的值不符合验证规则",
    },
  },
});

5集合关联

当数据库中两个集合要进行关联的时候 要在创建集合的时候就开始准备

const userSchema = new mongoose.Schema({
  name: String,
  age: Number,
  sex: String,
});

const artSchema = new mongoose.Schema({
  name: {
    type: String,
    //必填
    required: true,
    //最短
    minlength: 3,
    //最长
    maxlength: 8,
  },
  author: {
    //关联的方式
    type: mongoose.Schema.Types.ObjectId,
    //关联的名字
    ref: "Use",
  },
});

访问的时候要用populate

Art.find()
  .populate("author")
  .then((result) => console.log(result));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值