博客
关于我
看完我的笔记不懂也会懂----MongoDB
阅读量:426 次
发布时间:2019-03-06

本文共 2820 字,大约阅读时间需要 9 分钟。

MongoDB数据库学习

数据库的分类

数据库可以大致分为两类:关系型数据库非关系型数据库。关系型数据库(RDBMS)以表和行为主要存储单位,具有强大的约束和关系建模能力,典型代表包括MySQL、Oracle、DB2、SQL Server等。非关系型数据库(NoSQL)则以键值对或文档为主要存储单位,适用于处理非结构化数据,代表性数据库包括MongoDB、Cassandra、Redis等。

MongoDB属于非关系型数据库中的文档数据库

MongoDB是一种广泛应用的开源文档数据库系统。它以其灵活的数据模型和高性能的查询特性著称,特别适合处理处理非结构化和半结构化数据。

数据库基本概念

MongoDB的核心概念包括以下几个:

  • 数据库(Database):包含多个集合。
  • 集合(Collection):相当于关系型数据库中的表,存储一系列文档。
  • 文档(Document):MongoDB中的最小存储单位,通常以JSON格式存储,支持动态结构。

MongoDB常用指令

以下是一些常用的MongoDB操作指令:

  • 查看数据库
    show dbs
  • 切换数据库
    use <database_name>
  • 查看当前数据库
    db
  • 查看集合
    show collections
  • 删除集合
    .drop()
  • 删除数据库
    db.dropDatabase()

MongoDB的CURD操作

db.collection.insertOne({ attr: value });
db.collection.insertMany([{ attr: value1 }, { attr: value2 }]);

db.collection.find().count();
db.collection.find({ attr: value }).sort({ attr: 1 });

db.collection.update({ oldAttr: oldVal }, { $set: { newAttr: newVal } });
db.collection.updateMany({ attr: value }, { $set: { newAttr: newVal } });

db.collection.remove({ _id: ObjectId("5f4f64c6bf15e4118fcf7c2d") });
db.collection.deleteOne({ _id: ObjectId("5f4f64c6bf15e4118fcf7c2d") });

排序、限制和跳过

MongoDB支持对查询结果进行排序、限制和跳过:

  • 排序

    db.collection.find({ user: "fitz" }).sort({ user: 1 })
    (1表示升序,-1表示降序)

  • 限制

    db.collection.find({}).limit(10)
    限制返回的文档数量

  • 跳过

    db.collection.find({}).skip(1)
    跳过前几条记录

Find方法之投影

通过设置投影参数,可以只显示需要的字段:

db.collection.find({ user: "fitz" }, { age: 1 });

Mongoose简介

Mongoose是MongoDB的一个高级框架,提供了对MongoDB进行操作的更方便的方式。它通过定义Schema来对数据库进行类型化操作。

Mongoose中的核心对象

  • Schema(模式)

    用于定义文档的结构和约束。例如:

    const mongoose = require("mongoose");
    const Schema = mongoose.Schema;
    const stuSchema = new Schema({
    name: String,
    age: Number,
    gender: {
    type: String,
    default: 'Male'
    },
    address: String
    });
  • Model(模型)

    Model类似于MongoDB中的集合,用于操作具体的数据。通过以下命令创建模型:

    const StuModel = mongoose.model('student', stuSchema);
  • Document(文档)

    Model类似于集合中的文档,Document对象是Model的实例。例如:

    const stuDoc = new StuModel({
    name: 'Fitz',
    age: 20,
    gender: 'Female',
    address: 'Chenwu'
    });
  • Mongoose的基本使用

    连接数据库

    mongoose.connect('mongodb://127.0.0.1:27017/mongoose_test', function() {
    console.log('数据库已连接');
    });

    断开数据库

    mongoose.disconnect();

    Mongoose的增删改查

    StuModel.create({
    name: '1',
    age: 10,
    gender: 'male',
    address: 'one'
    });

    StuModel.remove({ name: '1' });

    StuModel.update({ name: '2' }, { $set: { name: 'nameChange', address: 'addressChange' } });

    StuModel.find({ name: 'Fitz' }).sort({ age: -1 });

    Mongoose与Document的关系

    创建Document对象

    const stu = new StuModel({
    name: 'newStu',
    age: 40,
    gender: 'male',
    address: 'DG'
    });

    修改Document对象

    stu.save(function(err) {
    if (!err) {
    console.log('修改成功');
    }
    });

    删除Document对象

    stu.remove(function(err) {
    if (!err) {
    console.log('删除成功');
    }
    });

    获取Document的属性值

    stu.get('age');

    设置Document的属性值

    stu.set('address', 'China');
    stu.save();

    转载地址:http://tcnuz.baihongyu.com/

    你可能感兴趣的文章
    Node-RED中使用JSON数据建立web网站
    查看>>
    Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
    查看>>
    Node-RED中实现HTML表单提交和获取提交的内容
    查看>>
    Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
    查看>>
    node.js 怎么新建一个站点端口
    查看>>
    Node.js 文件系统的各种用法和常见场景
    查看>>
    node.js 配置首页打开页面
    查看>>
    node.js+react写的一个登录注册 demo测试
    查看>>
    Node.js中环境变量process.env详解
    查看>>
    Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
    查看>>
    Node.js的循环与异步问题
    查看>>
    nodejs libararies
    查看>>
    nodejs 运行CMD命令
    查看>>
    nodejs-mime类型
    查看>>
    nodejs中Express 路由统一设置缓存的小技巧
    查看>>
    NodeJs单元测试之 API性能测试
    查看>>
    nodejs图片转换字节保存
    查看>>
    NodeJs学习笔记001--npm换源
    查看>>
    Nodejs教程09:实现一个带接口请求的简单服务器
    查看>>
    Nodejs简介以及Windows上安装Nodejs
    查看>>