• MongoDB简明手册


    官方文档链接

    一、简介

    • MongoDB是为快速开发互联网Web应用而设计的数据库系统
    • 其设计目标是极简、灵活、成为Web应用栈的一部分
    • 其数据模型是面向文档的,所谓文档即是一种类型于JSON的数据结构,可以把MongoDB数据库理解为存储各种各样的JSON文件。(专用结构:BSON,Binary JSON)
    • MongoDB的版本规则(x.y.z):y偶数表示稳定版,奇数表示开发版
    • MongoDB已不再支持32位系统(i386),且对平台兼容性要求复杂,官方解释

    二、核心概念

    • 数据库database
      • 理解为仓库,仓库里可以存放集合
    • 集合collection
      • 集合类似于数据,在集合里可以存储文档
    • 文档document
      • MongoDB的最小单位,存储和操作的对象都是文档
    • 概念对比sss- BSON数据类型参考:bb

    三、基本操作

    • 基本指令
      • show dbs:显示当前所有数据库
      • use dbname:进入到指定数据库中操作(不存在则自动创建,惰性加载的存储机制)
      • db:显示当前所在的数据库
      • show collections:显示数据库中所有的集合
    • CRUD指令
      • 插入文档
        • 单个插入语法:db.[collection].insert({})
        • 批量插入语法:db.[collection].insertMany([{}, …])
      • 查询文档
        • 查询全部:db.[collection].find()
        • 查询第一条:db.[collection].findOne()
        • 投影查询:db.[collection].find({query}, {field})
      • 修改文档
        • 语法:db.[collection].update({query}, {update}, {options})
        • 覆盖修改:db.[collection].update({query}, {})
        • 局部修改:db.[collection].update({query}, {$set:{}}),默认只修改第一条数据
        • 批量修改:db.[collection].update({query}, {$set:{}}, {multi:true})
        • 列值自增:db.[collection].update({query}, {$inc:{field:NumberInt(步进值)}})
      • 删除文档
        • 语法:db.[collection].remove({query})
        • 删除全部:db.[collection].remove({})
    • 文档间的关系通过内嵌文档的形式体现
      • 一对一 one to one
      • 一对多 one to many / 多对一 many to one
      • 多对多 many to many

    四、高级操作

    1. 分页查询
    • 统计查询,count()
      • 语法:db.[collection].count(query, options)
    • 分页列表查询,limit()和skip()
      • 语法:db.[collection].find().limit(num).skip(num)
    • 排序查询,sort()
      • 语法:db.[collection].find().sort({升序1,降序-1})
    1. 模糊查询,正则的复杂条件查询
      语法:db.[collection].find({field:/正则表达式/})
    2. 比较查询
      大于:db.[collection].find({field: {$gt: value}})
      小于:db.[collection].find({field: {$lt: value}})
      大于等于:db.[collection].find({field: {$gte: value}})
      小于等于:db.[collection].find({field: {$lte: value}})
      不等于:db.[collection].find({field: {$ne: value}})
    3. 包含查询
      包含:db.[collection].find({field: {$in: [value,…]}})
      不包含:db.[collection].find({field: {$nin: [value,…]}})
    4. 条件连接查询
      逻辑与:db.[collection].find({$and: [{…}, {…}, …]})
      逻辑或:db.[collection].find({$or: [{…}, {…}, …]})

    五、索引

    索引支持着MongoDB的高效查询。如果没有索引,MongoDB必须进行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档,这种方式的查询效率是极其低下的。如果查询存在适当的索引,MongoDB可以使用它限制必须检查的文档数。官方解释

    索引是一种特殊的数据结构,以易于遍历的形式存储集合数据集的一小部分。索引存储特定的字段或一组字段的值,按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。另外,MongoDB还可以使用索引中的排序返回排序结果。

    1. 单字段索引 Single Field Index
      在文档的单个字段上创建用户定义的升序/降序索引。
    2. 复合索引 Compound Index
      多个字段的用户定义索引,即复合索引。复合索引中列出的字段顺序具有重要意义。
  • 相关阅读:
    `算法知识` 哈希Hash
    Linux - 实现一个简单的 shell
    【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)
    LiveGBS流媒体平台GB/T28181功能-报警预案配置告警触发报警时截图及录像摄像头通过GB28181上报报警
    Java中StringBuilder常见的操作方法
    SqlServer如何将mdf、ldf文件导入数据库—两种解决方法
    Java项目Git提交规范
    MongoDB UPDATE使用$setOnInsert为新插入数据设置默认值
    深入剖析Java框架源码的设计之重载与重写、构造方法的区别详解
    C# 结构体转字节数组
  • 原文地址:https://blog.csdn.net/kun_csdn/article/details/126332371