博客
关于我
看完我的笔记不懂也会懂----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/

    你可能感兴趣的文章
    Oracle JDK vs OpenJDK
    查看>>
    ORACLE MERGE INTO (2)
    查看>>
    oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate
    查看>>
    Oracle ora-12514报错解决方法
    查看>>
    oracle ORA-14402 OGG-01296
    查看>>
    oracle package包头和package body包体例子
    查看>>
    oracle partition by list,深入解析partition-list 分区
    查看>>
    Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
    查看>>
    oracle pl/sql 导出用户表结构
    查看>>
    Oracle PLSQL Demo - 17.游标查询个别字段(非整表)
    查看>>
    oracle rac 安装 PRVG-13606 ntp 同步报错解决过程
    查看>>
    Oracle RAC性能调整的方案
    查看>>
    oracle rac集群的东西之QQ聊天
    查看>>
    UML— 用例图
    查看>>
    Oracle Schema Objects——Tables——Table Compression
    查看>>
    oracle scott趣事
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial GeoRaster 金字塔栅格存储
    查看>>