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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程的优先级与LAMP项目部署实战

一、进程的优先级&#xff08;扩展&#xff09; 1、什么是进程的优先级 Linux是一个多用户、多任务的操作系统&#xff0c;系统中通常运行着非常多的进程。哪些进程先运行&#xff0c;哪些进程后运行&#xff0c;就由进程优先级来控制 思考&#xff1a;什么时候需要用到进程…

力扣-python-两数相加

题解 1: # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # self.next nextclass Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:t…

【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1.粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述&#xff1a; 基本思想&#xff1a; 鸟群在寻找食物时&#xff0c;每只鸟都…

2023-10-17 LeetCode每日一题(倍数求和)

2023-10-17每日一题 一、题目编号 2652. 倍数求和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个正整数 n &#xff0c;请你计算在 [1&#xff0c;n] 范围内能被 3、5、7 整除的所有整数之和。 返回一个整数&#xff0c;用于表示给定范围内所有满足约束条件的数…

华纳云:连接mysql出现2059错误怎么解决

MySQL连接错误2059通常表示MySQL服务器拒绝了连接。这种错误可能由多种原因引起&#xff0c;以下是一些可能的解决方法&#xff1a; 检查MySQL服务器是否正在运行&#xff1a; 确保MySQL服务器正在正常运行。您可以使用以下命令检查MySQL服务器的状态&#xff1a; systemctl st…

Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 详解

解析: 理解 Object.prototype.toString.call(), instanceof, 和 Array.isArray() 是 JavaScript 中重要的类型检查工具。以下是一个较为详细的解释和示例代码&#xff0c;帮助你理解它们的工作原理和使用场景 Object.prototype.toString.call()&#xff1a; Object.prototyp…

rust - 理解borrow trait

简介 borrow trait 是处理借用(即其它语言中的引用)的 trait,变量的所有权不会转移.泛型定义如下: pub trait Borrow<Borrowed: ?Sized> {/// Immutably borrows from an owned value.fn borrow(&self) -> &Borrowed; }其中包含一个 borrow(&self)的方…

动手学深度学习—含并行连结的网络GoogLeNet(代码详解)

目录 1. Inception块3. GoogLeNet模型3. 训练模型 GoogLeNet吸收了NiN中串联网络的思想&#xff0c;并在此基础上做了改进&#xff0c;并且在2014年的ImageNet图像识别挑战赛中获得了不错的效果。 1. Inception块 GoogLeNet论文解决了多大的卷积核最合适的问题。 Inception块…

PHP 在线考试管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 PHP 在线考试管理系统是一套完善的web设计系统 layUI技术布局 &#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 PHP 在线考试系统1 代码 https://download.csdn.net/download/qq_41…

【C++面向对象】5. this指针

文章目录 【 1. 基本原理 】【 2. 实例 】 【 1. 基本原理 】 在 C 中&#xff0c;只有成员函数才有 this 指针&#xff08;友元函数没有 this 指针&#xff0c;因为友元不是类的成员&#xff09;&#xff0c;this 指针是所有成员函数的隐含参数。 在成员函数内部&#xff0c;…

线性表操作的实现--顺序表

本文参考朱战力老师的数据结构与算法--使用C语言一书 文章目录 前言 一、线性表是什么&#xff1f; 二、具体实现 1.顺序表的定义 2.初始化ListInitiate&#xff08;L&#xff09; 3.求当前元素个数ListLength&#xff08;L&#xff09; 4.插入元素ListInsert&#xff08;L&…

[卷积神经网络]FasterNet论文解析

一、概述 FasterNet是CVPR2023的文章&#xff0c;通过使用全新的部分卷积PConv&#xff0c;更高效的提取空间信息&#xff0c;同时削减冗余计算和内存访问&#xff0c;效果非常明显。相较于DWConv&#xff0c;PConv的速度更快且精度也非常高&#xff0c;识别精度基本等同于大型…

iOS 配置通用链接(Universal Link)服务端和开发者后台都配置好了,还是跳转不到App

目录 一、什么是 Universal Link&#xff1f; 1.背景介绍 2.特点 3.运行机制原理&流程图 二、配置教程 1.第一步&#xff1a;开启 Associated Domains 服务 1.1 开通 Associated Domains 2.第二步&#xff1a;服务器配置 apple-app-site-association&#xff08;AAS…

【makedown使用介绍】

如何使用makedown 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必…

pd19虚拟机软件 Parallels Desktop 19 mac中文停用功能

Parallels Desktop 19 mac是一款功能强大的虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 Parallels Desktop 19 for Mac停用功能 从Paralle…

深圳世有伯乐教育科技有限公司——LJ培训

今天来吐槽一波 深圳世有伯乐教育科技有限公司就是一个垃圾的培训机构&#xff0c;不&#xff0c;说是培训机构都是扭曲事实了&#xff0c;因为它根本就没有国家认可的办学许可证。光说没法让人信服&#xff0c;以下是企查查的截图&#xff1a; 世有伯乐的工商信息图片 续上&…

交换机基础(四):MSTP负载均衡配置案例

如图所示是某个企业内部核心网络的结构图&#xff0c;目前企业中有20个VLAN, 编号为VLAN1&#xff5e;VLAN20, 为了确保内部网络的可靠性&#xff0c;使用 了冗余链路和MSTP 协议。为了能更好地利用网络资源和带宽&#xff0c;现管理员希望通过配置MSTP 的负载均衡实现网络带宽…

TX Text Control.NET For WPF 32.0 Crack

TX Text Control 支持VISUAL STUDIO 2022、.NET 5 和 .NET 6 支持 .NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款完全可编程的丰富编辑控件&#xff0c;它在专为 Visual Stu…

软考高级系统架构 上午真题错题总结

目录 前言一、2022年真题&#xff08;√&#xff09;二、2021年真题三、2020年真题&#xff08;√&#xff09;四、2019年真题&#xff08;√&#xff09;五、2018年真题&#xff08;√&#xff09;六、2017年真题&#xff08;√&#xff09;七、2016年真题&#xff08;√&…

【Linux】IP协议

文章目录 &#x1f4d6; 前言1. 网络层2. IP协议格式3. IP报文分片和组装3.1 如何分片和组装&#xff1a;3.2 组装的衍生问题&#xff1a; 4. 网段划分&#xff08;重点&#xff09;4.1 子网掩码&#xff1a;4.2 IP地址的数量限制&#xff1a;4.3 私有IP地址和公网IP地址&#…