MongDB快速入门

一,MongoDB简介

MongoDB是一个开源,高性能,无模式的文档数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品的一种,也是最想关系型数据库的非关系型数据库

它支持的数据结构非常松散,是一种类似JSON的格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当灵活

MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档,普通数字和文档数组

MySQL术语MongoDB术语解释
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接/MongoDB不支持
嵌入文档MongoDB通过嵌入文档代替多表连接
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

特点:高性能,高可用性,高扩展性

二,配置

  • 首先在官网下载MongoDB

  • 配置bin的环境变量

  • 管理员启动cmd

    • 命令解释
      net start MongoDB启动服务
      net stop MongoDB关闭服务

三,常用命令

3.1,数据库操作

命令解释
use 数据库名称创建数据库
show dbs(databases)查看所有数据库
db查看当前使用的数据库
db.dropDatabase()删除当前使用的数据库

3.2,集合操作

命令解释
db.createCollection("集合")显示创建集合
db.集合.drop()删除集合
show collections查看所有集合

3.3,文档操作

3.3.1,文档插入
db.集合.insert({文档}
)
db.集合.insertMany([{文档},{文档}]
)

文档格式类似于json

命令解释
insert集合中插入单个文档
insertMany()集合中插入多个文档
3.3.2,文档查询
db.集合.find(query, projection)
  • query:用于查找文档的查询条件。默认为 {},即匹配所有文档。

    • db.集合.find()
      db.集合.find({"条件":"条件",..},..)
  • projection(可选):指定返回结果中包含或排除的字段。

    • db.集合.find(query,{域:1,_id:0})
      //:1表示显示
      //:0表示不显示
      //_id这个域不指定0默认就是显示的根据自己需求来定
命令解释
find默认为 {},即匹配所有文档。
findOne匹配第一条文档
3.3.3,文档更新
db.集合.update(query,update,options)
  • 覆盖修改

    • db.comment.update({条件},{修改文档})
      //指定条件的文档被覆盖成修改后的文档
  • 局部修改

    • db.comment.update({条件},{$set:{修改文档}})
      //指定条件的文档被局部修改
  • 批量修改

    • db.comment.update({条件},{$set:{修改文档}},{multi:ture})
      //指定条件的文档被局部修改 
      //multi为 true表示支持批量 false默认只修改第一条匹配的文档
  • 列值增长的修改(依次递增或递减)

    • db.comment.update({条件},{$inc:{域:NumberInt(1)}})
      //指定条件的文档的域依次递增
      //NumberInt:转换int类型 1表示每次累加1
命令解释
update修改文档

3.3.4,文档删除
命令解释
db.集合.remove(条件)按条件删除
db.集合.remove({})全部删除
db.集合.remove({_id:"1"})删除_id为”1“
3.3.5,统计查询
db.集合.count(query,options)
参数类型解释
querydocument查询选择条件
optionsdocument可选。用于修改计数的额外选项
3.3.6,分页查询
db.集合.find().limit(numb)
//从第一条开始查询numb条数据
db.集合.find().limit(numb).skip(numbTwo)
//跳过numbTow条数据查询numb
命令解释
limit查询numb条数据
skip跳过numbTwo条数据
3.3.7,排序查询
db.集合.find().sort(排序方式)
//升序 域:1 ,降序 域:-1
//排序方式支持多条件
3.3.8,正则的复杂条件查
db.集合.find({域:/表达式/})
//查询域中包含表示式的文档
3.3.9,比较查询
db.集合.find({域:{$符号:NumberInt(值)}})
符号解释
$gt大于
$lt小于
$gte大于等于
$lte小于等于
$ne不等于
3.3.10,包含查询
db.集合.find({域:{$in:["数据1","数据2"]}})
//域中满足数据1或数据2的文档
符号解释
$in包含
$nin不包含
3.3.11,条件连接查询
db.comment.find({$and:[{条件1},{条件2},{条件3},...]})
//查询满足所有条件的文档,$or满足其中一个条件即可
//条件可以是指定条件也可以是比较条件...
符号解释
$and
$or

3.4,索引

3.4.1,概述

索引支持在MongoDB中高效查询,和Mysql一样没有索引的化必须执行全表(集合)扫描,一般MongoDB就是用来处理大数量数据的,而在处理大量的数据时索引的作用就会体现出来。

3.4.2,类型
  • 单字段索引

    • MongoDB支持在文档的单个字段上创建用户定义的升降/降序索引,称为单字段索引(Single Field Index)

    • 对于单个字段索引和排序操作,索引键的排序顺序(升序降序)并不重要,因为MongoDB可以在任何方向上遍历索引

  • 复合索引

    • MongoDB还支持多个字段的用户定义索引,即复合查询(COmpound Index)

    • 复合索引中列出的字段顺序具有重要意义。顺序如{域1:1,域2:-1}组成,则索引首先按域1的正序排序,然后在每个有域1的文档,再按域2倒序排序

3.4.3,索引的查看
db.集合.getIndexes()
3.4.4,索引的创建
db.集合.createIndex(keys,optios)
参数解释
keys包含域的文档,{域:1或-1},1表示升序,-1表示降序
optios可选,包含一组控制索引创建的选项的文档。有关详细信息可参考官方文档
3.4.4,索引的移除
db.集合.dropIndex(index)/根据索引的name来移除索引
db.集合.dropIndex({域:1})//根据创建索引的指定规则来移除索引
db.集合.dropIndexes()//移除所有的索引
3.4.5,执行计划
  • 查看索引的情况

  • 查看索引的耗时

  • 查看是否基于索引查询

db.集合.find({}).explain()//根据查询条件来展示是否用到索引

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

sharedPreference包的使用总结

文章目录 1 概念介绍2 实现方法3 示例代码我们在上一章回中介绍了"如何自定义评分条"相关的内容,本章回中将介绍如何实现本地存储.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 Flutter是一套跨平台的UI框架,它不像原生SDK一样提供本地存储功能,因此,我们在…

TCP连接的时候遇到的异常(目标端口没开放)

import asyncioasync def check_port(ip, port, timeout1):"""检查目标 IP 和端口是否开放:param ip: 目标 IP 地址:param port: 目标端口:param timeout: 超时时间(秒)"""try:reader, writer await asyncio.open_connec…

C总结(C语言知识点,深化重难点)

C语言 1.使用C语言的7个步骤2.ASCII码3.提高程序可读性的机巧4.如何使用多种整形5.打印多种整形6.课移植类型:stdint.h和inttypes.h7.浮点数常量8.浮点值的上溢和下溢9.使用数据类型11.常量和C预处理器12.转换说明的意义12.1转换不匹配13.副作用和序列点14.数组简介…

burpsuite(6)暴力破解与验证码识别绕过

声明!!! 学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章 视频链接:泷羽sec-bilibili 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 项目地址:https://github.com/f0ng/cap…

抗DDOS设备

0x00 定义: 抗DDOS设备顾名思义,就是防御DDoS攻击的设备,通常包含三个部分:检测中心、清洗中心和管理中心 检测中心主要负责对流量进行检测,发现流量异常后上报管理中心,由管理中心下发引流策略至清洗中心&#xff0…

systemV信号量与消息队列

目录 引言 ipc简介 ipc在kernel的管理机制(简介) 信号量 理解信号量 原子 结论 mmap 消息队列 接口 引言 在复杂的软件系统中,进程间的协调和通信是确保系统高效、稳定运行的关键。System V是一套历史悠久且功能强大的进程间通信&a…

【CKS最新模拟真题】Falco 的运行时安全性

系列文章目录 【CKS最新模拟真题】获取多个集群的上下文名称并保存到指定文件中 文章目录 系列文章目录参考地址一、TASK二、解题过程1、问题一解题2、问题二解题 参考地址 CKS考试允许打开falco的地址 https://falco.org/docs/reference/rules/supported-fields/ 一、TASK …

Altium Designer学习笔记 32 DRC检查_丝印调整

基于Altium Designer 23学习版,四层板智能小车PCB 更多AD学习笔记:Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…

【原生js案例】webApp实现鼠标移入移出相册放大缩小动画

图片相册这种动画效果也很常见,在我们的网站上。鼠标滑入放大图片,滑出就恢复原来的大小。现在我们使用运动定时器来实现这种滑动效果。 感兴趣的可以关注下我的系列课程【webApp之h5端实战】,里面有大量的css3动画效果制作原生知识分析&…

MetaGPT 安装

1. 创建环境 conda create -n metagpt python3.10 && conda activate metagpt2. 可编辑方式安装 git clone --depth 1 https://github.com/geekan/MetaGPT.git cd MetaGPT pip install -e .3. 配置 metagpt --init-config运行命令,在C盘位置C:\Users\325…

流量地球(Java Python JS C++ C )

题目描述 流浪地球计划在赤道上均匀部署了N个转向发动机,按位置顺序编号为0~N-1。 初始状态下所有的发动机都是未启动状态;发动机启动的方式分为”手动启动"和”关联启动"两种方式;如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被”关联启动”…

Milvus向量数据库04-Pipelines搭建RAG应用

Milvus向量数据库04-Pipelines搭建RAG应用 Zilliz Cloud Pipelines 可以将文档、文本片段和图像等非结构化数据转换成可搜索的向量并存储在 Collection 中。本文将介绍 Zilliz Cloud Pipelines 的三种主要类型并提供示例代码,展示如何使用 Pipelines 搭建 RAG 应用。…

离线写博客(失败) - 用Markdown来离线写博客

因为想控制一下用网,但是又有写博客的需求,所以想研究一下离线写博客。 我看CSDN上面好像有很多介绍,Windows Live Writer 啦,Markdown啦,还有一些其他的,我看了一下,好像 Markdown还有点儿靠谱…

【洛谷】B3844 [GESP样题 二级] 画正方形(详细注释)

#include <iostream> using namespace std; int main() {//声明一个整型变量n&#xff0c;用于接收输入的数值&#xff0c;该数值将决定后续输出图案的行数和列数int n; cin >> n;//声明两个整型变量i和j&#xff0c;分别用作外层循环和内层循环的计数器int i, j;/…

Linux-音频应用编程

ALPHA I.MX6U 开发板支持音频&#xff0c;板上搭载了音频编解码芯片 WM8960&#xff0c;支持播放以及录音功能&#xff01;本章我们来学习 Linux 下的音频应用编程&#xff0c;音频应用编程相比于前面几个章节所介绍的内容、其难度有所上升&#xff0c;但是笔者仅向大家介绍 Li…

番茄社区双端视频APP源码_内附安装教程

新版视频源码|类似番茄APP视频付费软件APP源码教程 番茄社区双端视频APP源码&#xff0c;带安装教程&#xff0c;源码非组件&#xff0c;短视频、图片、交流、讨论、电影、电视剧。 没有什么问题宝塔就可以搭建&#xff0c;采集方面是火车头可以自己写规则&#xff01;

Onchain 正在蚕食 Offchain

目录 未来在链上 价值创造 技术加速 机构采用 小队&#xff1a;加速链上经济 我们正在进入一个代码就是货币、信任被编程、全球接入打破传统经济界限的时代。这种新兴模式就是我们所说的链上经济。 在此领域&#xff0c;Solana 因其在基础设施和应用程序方面的持续创新而脱颖而…

【LeetCode】80.删除有序数组中的重复项II

题目链接&#xff1a; 80.删除有序数组中的重复项II 题目描述&#xff1a; 解题思路&#xff1a; 按照题目中要求&#xff0c;必须在原来数组中进行修改&#xff0c;并且在O(1)额外空间条件下完成。因此我们可以使用双指针算法&#xff0c;算法具体流程如下&#xff1a; 如…

ORB-SLAM2 ---- 词袋模型BOW

文章目录 一、回环检测的重要性二、回环检测的方法三、词袋模型四、词典五、实例展示1. 计算评分2. 找出有相同单词的关键帧3. 用词袋进行快速匹配 六、总结 一、回环检测的重要性 在前面的学习我们知道&#xff0c;噪声的影响是不可消除的&#xff0c;而上一帧的误差不可避免的…

Android APP自学笔记

摘抄于大学期间记录在QQ空间的一篇自学笔记&#xff0c;当前清理空间&#xff0c;本来想直接删除掉的&#xff0c;但是感觉有些舍不得&#xff0c;因此先搬移过来。 Android导入已有外部数据库 2015.06.26在QQ空间记录&#xff1a;在Android中不能直接打开res aw目录中的数据…