当前位置: 首页 > news >正文

MongoDB 学习笔记(基础)

概论

出现背景:MongoDB 是文档型数据库,由于传统的关系型数据库(如 MySQL),在数据操作的“三高”需求以及应对 web 的网站需求面前显得有些吃力,在此环境下 MongoDB 出世了

三高需求:

(1) 对数据库高并发读写的需求。

(2) 对海量数据的高效率存储和访问的需求。

(3) 对数据库的高可扩展性和高可用性的需求。

(MongoDB 是 NoSQL 中最像 SQL 的非关系型数据库)

NoSQL (非关系型数据库)VS SQL(关系型数据库)
MongoDB SQL
DatabaseDatabase
TableCollection
RowDocument
ColumnField
Key-ValueField : FieldValue
IndexIndex
_ID(auto)ID
多表连接嵌入文档

(MongoDB 默认为每个文档设置了一个主键 _ID,默认下它是 Objectid 对象,它在集合中是唯一标识的) 

MongoDB 有如下三个自带的数据库:

  1. admin 数据库:用于存储用户和角色等信息
  2. local 数据库:用来存储副本集的配置信息,数据不能被复制到其它节点
  3. config 数据库:在分片设置时存储分片的相关信息

数据库自定义命名规范:不能为空或有特殊符合及以数字开头,且对大小写敏感,长度最多为 64B(如果用户不定义自己的数据库名称,则默认操作数据库名称为 test)

MongoDB 支持的数据结构非常松散,其记录是一个文档(由键值对 field:value 组成),文档类似于 JSON 对象

数据库管理

创建数据库(如果此数据库已存在则切换到指定数据库,而实际上只有向其插入文档时才会真正创建)
use DATABASE_NAME显示数据库
show dbs删除数据库
db.dropDatabase()

集合管理

创建集合
db.createCollection(name, options)查看集合
show collections 或 show tables删除集合
db.COLLECTION_NAME.drop()

 创建集合的注释:

  • name:要创建的集合名称
  • options:可选项
    1. capped:是否是固定大小集合
    2. autoIndexId:是否自动在 _ID 键名上创建索引
    3. size:定义固定集合的大小,单位是 千字节(Kbytes)
    4. max:固定集合文档的最大数量

文档管理 

插入文档
db.COLLECTION_NAME.insert(document_name)单插入文档
db.COLLECTION_NAME.insertOne(document_name)多插入文档
db.COLLECTION_NAME.insertMany([<document_name1>, <document_name2>, ···], {writeConcern: <1|0>, ordered: <true|false>})更新文档
db.COLLECTION_NAME.update(<query>, <update>, {upset: <boolean>, multi: <boolean>, writeConcern: <document>})db.COLLECTION_NAME.save(<document>)删除文档
db.COLLECTION_NAME.remove()db.COLLECTION_NAME.deleteOne()db.COLLECITON_NAME.deleteMany()查询文档
db.COLLECTION_NAME.find()db.COLLECTION_NAME.find().pretty()限定查询数量
db.COLLECTION_NAME.find().limit(Num)查询结果排序
db.COLLECTION_NAME.find().sort({KEY:1|-1})

多插入文档的注释:

  • writeConcern:指定写入策略,1 要求确认写,为 0 则不要求
  • ordered:指定是否按顺序写入,true 要求按顺序写入,为 false 则不要求

更新文档的注释:

  • query:更新的条件/对象
  • update:更新的对象和更新的操作符
    1. {$set:{field:value}}    把文档中某个 field 的值设置为 value
    2. {$inc:{field:value}}    把文档中某个数值型的 field 增加一次 value 值
    3. {$unset:{field:0}}    删除某个 field
    4. {$push:{field:value}}    把 value 追加到数组 field 中,如果数组 field 不存在,则会自动插入一个数组类型
    5. {$addToSet:{field:value}}    加一个值到数组 field 中,而且只有当这个值在数组中不存在时才增加
    6. {$pull:{field:value}}    从数组 field 中删除一个等于 value 的值
    7. {$rename:{old_field_name:new_field_name}}    对 field 进行重命名
  • upsert:可选参数,如果不存在 update 的记录,是否插入新文档,true为插入,默认是false,不插入
  • multi:可选参数,默认是 false,只更新找到的第一条记录;如果这个参数为 true,就把按条件查出来的多条记录全部更新
  • writeConcern:可选参数,抛出异常的级别

文档聚合

db.COLLECTION_NAME.aggregate( [{$pipeline1}, {$pipeline2}, {$pipeline3}···] )

其中的 $pipeline1 等都被称作管道命令

  1. $match:指定条件过滤
  2. $group:指定键分组
    • $sum:求和
    • $avg:平均
    • $min:最小值
    • $max:最大值
    • $push:将结果插到数组中,且去掉重复值
    • $addToSet:将结果插入到数组
    • $first:返回第一个文档数据
    • $last:返回最后一个文档数据
  3. $project:投影 
  4. $limit:限定
  5. $skip:跳过
  6. unwind:分解
  7. sort:排序

 MongoDB——》聚合查询(project、match、limit、skip、unwind、group、sort)_mongo match limit-CSDN博客

文档索引

db.COLLECTION_NAME.createIndex(keys, options)

查看索引
db.COLLECTION_NAME.getIndexes()查看索引大小
db.COLLECTION_NAME.totalIndexSize()删除指定索引
db.COLLECTION_NAME.dropIndex("索引名称")删除所有索引
db.COLLECTION_NAME.dropIndexes()

相关文章:

MongoDB 学习笔记(基础)

概论 出现背景&#xff1a;MongoDB 是文档型数据库&#xff0c;由于传统的关系型数据库&#xff08;如 MySQL&#xff09;&#xff0c;在数据操作的“三高”需求以及应对 web 的网站需求面前显得有些吃力&#xff0c;在此环境下 MongoDB 出世了 三高需求&#xff1a; (1) 对数…...

【TGRS 2023】RingMo: A Remote Sensing Foundation ModelWith Masked Image Modeling

RingMo: A Remote Sensing Foundation Model With Masked Image Modeling, TGRS 2023 论文&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9844015 代码&#xff1a;https://github.com/comeony/RingMo MindSpore/RingMo-Framework (gitee.com) …...

性能测试 —— 生成html测试报告、参数化、jvm监控

1.生成HTML的测试报告 1.1配置 (1)找到jmeter 的安装目录&#xff0c;下的bin中的jmeter.properties&#xff08;jmeter配置文件&#xff09; (2) ctrl f &#xff0c;搜索jmeter.save.saveservice.output_format&#xff0c;取消井号 并且 把等号后的xml改为csv&#xff0c;…...

堆(二叉树,带图详解)

一.堆 1.堆的概念 2.堆的存储方式 逻辑结构 物理结构 2.堆的插入问题 3.堆的基本实现&#xff08;代码&#xff09;&#xff08;以小堆为例&#xff09; 1.堆的初始化 2. 向上调整 3.插入结点 4. 交换函数、堆的打印 5.向下调整 6.删除根节点并调整成小根堆 7.获取堆…...

vue3 code format bug

vue code format bug vue客户端代码格式化缺陷&#xff0c;为了方便阅读和维护&#xff0c;对代码格式化发现这个缺陷 vue.global.min.3.2.26.js var Vuefunction(r){"use strict";function e(e,t){const nObject.create(null);var re.split(",");for(le…...

7-3、S曲线生成器【51单片机控制步进电机-TB6600系列】

摘要&#xff1a;本节介绍步进电机S曲线生成器的计算以及使用 一.计算原理 根据上一节内容&#xff0c;已经计算了一条任意S曲线的函数。在步进电机S曲线加减速的控制中&#xff0c;需要的S曲线如图1所示&#xff0c;横轴为时间&#xff0c;纵轴为角速度&#xff0c;其中w0为起…...

CDC实时数据同步

一丶CDC实时数据同步介绍 CDC实时数据同步指的是Change Data Capture&#xff08;数据变更捕获&#xff09;技术在数据同步过程中的应用。CDC技术允许在数据源发生变化时&#xff0c;实时地捕获这些变化&#xff0c;并将其应用到目标系统中&#xff0c;从而保持数据的同步性。…...

javaEE -10(11000字详解5层重要协议)

一&#xff1a;应用层重点协议 1.1&#xff1a; DNS DNS&#xff0c;即Domain Name System&#xff0c;域名系统。DNS是一整套从域名映射到IP的系统。 TCP/IP中使用IP地址来确定网络上的一台主机&#xff0c;但是IP地址不方便记忆&#xff0c;且不能表达地址组织信息&#x…...

360智慧生活旗舰产品率先接入“360智脑”能力实现升级

10月25日&#xff0c;360智慧生活秋季新品及视觉云方案发布会在深圳召开。360智能硬件产品&#xff0c;诸如 360可视门铃、360智能摄像机、360行车记录仪、360儿童手表和家庭防火墙等&#xff0c;都在各自的行业有着举足轻重得地位&#xff0c;而这次发布的系列新品&#xff0c…...

【系统架构设计】 架构核心知识: 2 云原生架构

目录 一 云原生架构 1 云计算 2 分类 3 云计算架构 4 云原生架构设计原则...

Unity - 导出的FBX模型,无法将 vector4 保存在 uv 中(使用 Unity Mesh 保存即可)

文章目录 目的问题解决方案验证保存为 Unity Mesh 结果 - OK保存为 *.obj 文件结果 - not OK&#xff0c;但是可以 DIY importer注意References 目的 备忘&#xff0c;便于日后自己索引 问题 为了学习了解大厂项目的效果&#xff1a; 上周为了将 王者荣耀的 杨玉环 的某个皮肤…...

【疯狂Java】数组

1、一维数组 (1)初始化 ①静态初始化&#xff1a;只指定元素&#xff0c;不指定长度 new 类型[] {元素1,元素2,...} int[] intArr; intArr new int[] {5,6,7,8}; ②动态初始化&#xff1a;只指定长度&#xff0c;不指定元素 new 类型[数组长度] int[] princes new in…...

leetcode 503. 下一个更大元素 II、42. 接雨水

下一个更大元素 II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数&…...

【德哥说库系列】-PostgreSQL跨版本升级

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

rust学习——智能指针

智能指针 在各个编程语言中&#xff0c;指针的概念几乎都是相同的&#xff1a;指针是一个包含了内存地址的变量&#xff0c;该内存地址引用或者指向了另外的数据。 在 Rust 中&#xff0c;最常见的指针类型是引用&#xff0c;引用通过 & 符号表示。不同于其它语言&#xf…...

系列一、Spring Framework

一、谈谈你对Spring的理解 Spring是一个生态&#xff0c;是一个轻量级的开源容器框架&#xff0c;可以构建Java应用所需要的一切基础设施&#xff0c;它的出现是为了解决企业级应用开发中业务逻辑层和其他各层对象与对象之间耦合的问题&#xff0c;通常情况下所说的Spring是指S…...

PULP Ubuntu18.04

1. 安装eda工具&#xff1a;questasim_10.7_linux64&#xff0c;网上有教程和方法&#xff0c;如有问题&#xff0c;可私信我 2. 代码下载&#xff1a; git clone https://github.com/pulp-platform/pulp 编译代码 cd pulp source setup/vsim.sh make checkout make scripts …...

Docker harbor私有仓库部与管理

目录 搭建本地私有仓库 Docker容器的重启策略 Harbor 简介 什么是Harbor Harbor的特性 Harbor的构成 Docker harbor私有仓库部署 Harbor.cfg配置文件中的参数 维护管理Harbor 总结 搭建本地私有仓库 #首先下载 registry 镜像 docker pull registry#在 daemon.json …...

解决虚拟机联网问题

虚拟机开机后发现右上角缺少联网标志(下面有正常联网标志)&#xff0c;这样就是连不上网的 不信你可以打开Ubuntu里面的浏览器或ping www.baidu.com 1.编辑虚拟机设置-->网络适配器-->如图所示 2.选择编辑-->虚拟网络编辑器 3.更改设置 4此处可以选择还原默认设置&am…...

Unity 自定义小地图

最近工作做了个小地图&#xff0c;再此记录下思路。 1、准备所需素材 显示为地图&#xff08;我们取顶视图&#xff09;。创建一个Cube&#xff0c;缩放到可以把实际地图包住。实际地图的尺寸和偏移量 。我这里长宽都是25&#xff0c;偏移量&#xff08;1&#xff0c;0&…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...