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

本文共 2780 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    Python:如何根据日期时间获取值的计数
    查看>>
    python:如何检测串行 COM 上的设备名称/ID
    查看>>
    Python:如何模拟 datetime.utcnow()?
    查看>>
    Python:如果DataFrames之间的其他值匹配,则对DataFrame中的值求和
    查看>>
    Python:字典思维
    查看>>
    Python:将 HEX 字符串转换为字节
    查看>>
    Python:将列表与范围列表合并
    查看>>
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>
    Python:按字符的位置拆分字符串
    查看>>
    Python:替换嵌套字典中的值
    查看>>
    Python:爬取数据出现response.status_code为403解决方法
    查看>>
    Python:爬取数据出现response.status_code为418解决方法
    查看>>
    Python:生成“元组集“;来自“元组列表“;不考虑顺序
    查看>>
    Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)
    查看>>
    Python:用渐进式数字重命名列表中的重复项而不对列表进行排序
    查看>>
    Python:矩形参数无效
    查看>>
    Python:语法进阶
    查看>>
    Python:调用复制函数时调用 Python 对象时超出了最大递归深度
    查看>>
    Python:这两个 import 语句有什么区别?
    查看>>