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

    你可能感兴趣的文章
    Objective-C实现SizeBalancedTree大小平衡树(附完整源码)
    查看>>
    Objective-C实现skew heap倾斜堆算法(附完整源码)
    查看>>
    Objective-C实现Skip List跳表算法(附完整源码)
    查看>>
    Objective-C实现slack message松弛消息算法(附完整源码)
    查看>>
    Objective-C实现SlopeOne算法(附完整源码)
    查看>>
    Objective-C实现slow sort慢排序算法(附完整源码)
    查看>>
    Objective-C实现smo算法(附完整源码)
    查看>>
    Objective-C实现strncpy函数功能(附完整源码)
    查看>>
    Objective-C实现strschr函数功能(附完整源码)
    查看>>
    Objective-C实现subset generation子集生成算法(附完整源码)
    查看>>
    Objective-C实现substring函数功能(附完整源码)
    查看>>
    Objective-C实现sum of geometric progression几何级数之和算法(附完整源码)
    查看>>
    Objective-C实现sum of subset子集总和算法(附完整源码)
    查看>>
    Objective-C实现SVM支持向量机算法(附完整源码)
    查看>>
    Objective-C实现sylvester西尔维斯特方程算法(附完整源码)
    查看>>
    Objective-C实现tabu search禁忌搜索算法(附完整源码)
    查看>>
    Objective-C实现tanh函数功能(附完整源码)
    查看>>
    Objective-C实现TCP Server 多线程同时连接多个客户端(附完整源码)
    查看>>
    Objective-C实现TCP拥塞控制(附完整源码)
    查看>>
    Objective-C实现tcp网络通讯服务器+客户端(附完整源码)
    查看>>