MongoDB

安装

  1. 数据存放路径:D:\data\db

  2. 安装目录:D:\MongoDB\mongodb-windows-x86_64-5.0.19\mongodb-win32-x86_64-windows-5.0.19\bin 配置环境变量

  3. 开启服务端,客户端

bash 复制代码
# 开启服务端,指定数据存放路径
mongod --dbpath D:\data\db

# 开启客户端
mongo

命令

数据库命令

bash 复制代码
# 显示所有数据库
show dbs

# 切换数据库,没有则自动创建
use testDatabase

# 当前所在数据库
db

# 删除数据库(切换到要删除的数据库)
use testDatabase
db.dropDatabase()

集合命令

bash 复制代码
# 创建集合
db.createCollection('users')

# 显示所有集合
show collections

# 删除集合
db.集合名.drop()

# 集合重命名
db.集合名.renameCollection('新集合名')

文档命令

bash 复制代码
# 插入文档
db.集合名.insert(文档对象)

# 查询文档
# _id是mongodb自动生成的唯一编号,用来唯一标识文档
db.集合名.find(查询条件)
db.集合名.find() # 显示所有文档

# 更新文档
db.集合名.update(查询条件,新文档对象)
db.集合名.update({name:"ccc"},{$set:{age:999}})

# 删除文档
db.集合名.remove(查询条件)

Mongoose

连接数据库

js 复制代码
const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/testDatabase");

mongoose.connection.once("open", () => {
  console.log("连接成功");
});

mongoose.connection.on("error", () => {
  console.log("连接失败");
});

mongoose.connection.on("close", () => {
  console.log("连接关闭");
});

// 关闭连接
mongoose.disconnect();

文档操作

文档对象的字段类型

字段校验

js 复制代码
// 方式1 只有字段类型
// 创建文档的结构schema
const bookSchema1 = new mongoose.Schema({
  name: String,
  author: String,
  price: Number,
  tags: Arrary
});

// 方式2 添加字段校验
const bookSchema1 = new mongoose.Schema({
  name: {
  	type: String,
  	required: true // 必填
  },
  author: {
	type: String,
	default: '匿名' // 默认值
  },
  price: {
	type: Number,
	unique: true   // 唯一值
  }, 
  tags: {
	type: Arrary,
	enum: ['a','b'] // 枚举值
  }, 
});

文档对象的增删改查

js 复制代码
const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/testDatabase");

mongoose.connection.once("open", () => {
  console.log("连接成功");
  // 1.创建文档的结构schema
  const bookSchema = new mongoose.Schema({
    name: {
      type: String,
      required: true,
    },
    author: {
      type: String,
      default: "匿名作者",
    },
    price: Number,
  });

  // 2.创建文档的模型对象,用于操作文档
  const bookModel = mongoose.model("booksCollection", bookSchema);

  // 3.使用文档的模型对象操作文档(增删改查)

  // 插入
  bookModel
    .create({
      name: "bookA",
      price: 88888888,
    })
    .then((res) => {
      console.log("单条插入", res);
    })
    .catch((err) => {
      console.log(err);
    });

  bookModel
    .insertMany([
      {
        name: "西游记",
        author: "a",
        price: 1,
      },
      {
        name: "红楼梦",
        author: "b",
        price: "2",
      },
      {
        name: "三国演义",
        author: "c",
        price: 3,
      },
      {
        name: "水浒传",
        author: "d",
        price: 4,
      },
    ])
    .then((res) => {
      console.log("批量插入", res);
    })
    .catch((err) => {
      console.log(err);
    });

  // 删除
  bookModel.deleteOne({ name: "bookA" }).then((res) => {
    console.log("删除", res);
  });

  // 更新
  bookModel.updateOne({ name: "西游记" }, { price: 123456 }).then((res) => {
    console.log("更新", res);
  });

  // 查找
  bookModel.find().then((res) => {
    console.log("查找", res);
  });
});

mongoose.connection.on("error", () => {
  console.log("连接失败");
});

mongoose.connection.on("close", () => {
  console.log("连接关闭");
});

// 关闭连接
// mongoose.disconnect();

条件查询

运算符:

逻辑运算符:

正则表达式:name中含有imissyou的对象

读取文档

js 复制代码
// select 1需要的字段 0不要的字段
// sort   1升序 -1降序
// skip   跳过1条对象
// limit  前n条对象
bookModel
  .find()
  .select({ _id: 0, name: 1, price: 1 })
  .sort({ price: -1 })
  .skip(1)
  .limit(3)
  .then((res) => {
    console.log("查找", res);
  });
js 复制代码
const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/testDatabase");

mongoose.connection.once("open", () => {
  console.log("连接成功");
  // 1.创建文档的结构schema
  const bookSchema = new mongoose.Schema({
    name: {
      type: String,
      required: true,
    },
    author: {
      type: String,
      default: "匿名作者",
    },
    price: Number,
  });

  // 2.创建文档的模型对象,用于操作文档
  const bookModel = mongoose.model("booksCollection", bookSchema);

  // 3.使用文档的模型对象操作文档

  // 查找
  bookModel
    .find()
    .select({ _id: 0, name: 1, price: 1 })
    .sort({ price: -1 })
    .skip(1)
    .limit(3)
    .then((res) => {
      console.log("查找", res);
    });
});

mongoose.connection.on("error", () => {
  console.log("连接失败");
});

mongoose.connection.on("close", () => {
  console.log("连接关闭");
});
相关推荐
全栈测试笔记2 小时前
异步函数与异步生成器
linux·服务器·前端·数据库·python
Lee_SmallNorth2 小时前
变态需求之【角色不同访问数据库的用户不同】
java·开发语言·数据库
李慕婉学姐2 小时前
Springboot连锁火锅管理及预测系统sh5s1gn1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
dishugj2 小时前
【oracle】19c集群巡检问题
数据库·oracle
知识分享小能手2 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle 其他数据对象 —— 语法详解与综合实践(11)
数据库·学习·oracle
木风小助理2 小时前
JavaStreamAPI的性能审视,优雅语法背后的隐形成本与优化实践
java·前端·数据库
Knight_AL2 小时前
MySQL InnoDB 锁机制深度解析:行锁、表锁、间隙锁、临键锁(Next-Key Lock)
数据库·mysql
良策金宝AI3 小时前
工程设计企业AI试用落地路径:从效率验证到知识沉淀
数据库·人工智能·知识图谱·ai助手·工程设计
panzer_maus3 小时前
Redis的简单介绍(2)-处理过期Key的策略
数据库·redis·缓存
仗剑恬雅人3 小时前
LINUX数据库高频常用命令
linux·运维·服务器·数据库·ssh·运维开发