一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点
  • 面向集合存储,易存储对象类型的数据。
  • 模式自由。
  • 支持动态查询。
  • 支持完全索引,包含内部对象。
  • 支持查询。
  • 支持复制和故障恢复。
  • 使用高效的二进制数据存储,包括大型对象(如视频等)。
  • 自动处理碎片,以支持云计算层次的扩展性
  • 支持 RUBY,PYTHON,JAVA,C++,PHP 等多种语言。
  • 文件存储格式为 BSON(一种 JSON 的扩展)
  • 可通过网络访问
存储结构

MongoDB 中的记录就是一个 BSON 文档,它是由键值对组成的数据结构,类似于 JSON 对象,是 MongoDB 中的基本数据单元。字段的值可能包括其他文档、数组和文档数组。

  • 文档(Document) :MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行(Row)。
    在这里插入图片描述

  • 集合(Collection) :一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。
    在这里插入图片描述

  • 数据库(Database) :一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。

SQL 与 MongoDB 对比
SQLMongoDB
表(Table集合(Collection)
行(Row文档(Document)
列(Col)字段(Field)
主键(Primary Key对象 ID(Objectid)
索引(Index)索引(Index)
嵌套表(Embeded Table)嵌入式文档(Embeded Document)
数组(Array)数组(Array)
使用方法
1.创建数据库
use DATABASE_NAME
2.查看所有数据库
show dbs
3.查看当前数据库
db
4.切换数据库
use DATABASE_NAME
5.删除数据库
db.dropDatabase()
6.创建数据表
db.createCollection("TABLES_NAME")
7.查看数据表
show tables
show collections
8.删除数据表
db.TABLES_NAME.drop()
9.表中插入数据
db.TABLES_NAME.insert(document)
db.TABLES_NAME.save(document)
例:
db.runoob.insert({"name":"菜鸟教程"})
或:
document=({"name":"菜鸟教程","age":18})
db.runoob.insert(document)
10.查看表数据
db.TABLES_NAME.find(query)
查多少条:
db.TABLES_NAME.find().limit(NUMBER)
跳过多少条:
db.TABLES_NAME.find().limit(NUMBER).skip(NUMBER)
格式化:
db.TABLES_NAME.find(query).pretty()
排序(其中 1 为升序排列,而 -1 是用于降序排列):
db.TABLES_NAME.find().sort({KEY:1})
MongoDB 与 SQL Where 语句比较:
操作格式范例SQL Where 语句
等于{:}db.col.find({“by”:“菜鸟教程”}).pretty()where by = ‘菜鸟教程’
小于{:{$lt:}}db.col.find({“likes”:{$lt:50}}).pretty()where likes < 50
小于或等于{:{$lte:}}db.col.find({“likes”:{$lte:50}}).pretty()where likes <= 50
大于{:{$gt:}}db.col.find({“likes”:{$gt:50}}).pretty()where likes > 50
大于或等于{:{$gte:}}db.col.find({“likes”:{$gte:50}}).pretty()where likes >= 50
不等于{:{$ne:}}db.col.find({“likes”:{$ne:50}}).pretty()where likes != 50
例:
db.col.find({"name":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
db.col.find({$or:[{"name":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
db.col.find({"likes": {$gt:50}, $or: [{"name": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
11.修改表数据
db.TABLES_NAME.update(query,update,{upsert,multi,writeConcern})
db.TABLES_NAME.save(document,{writeConcern})
参数说明:

query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql > update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true> 为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。

例:
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
db.col.save({"_id" : ObjectId("56064f89ade2f21f36b03136"),"title" : "MongoDB"})
12.删除表数据
db.collection.remove(query,{justOne,writeConcern})
参数说明:

query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别

例:
db.col.remove({'title':'MongoDB 教程'})
db.col.remove({'title':'MongoDB 教程'},1)
13.清空表数据
db.col.remove({})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯科技Hi Tech Day暨2023数字开物大会:智能涌现将通往无数的未来

腾讯科技讯 12月14日&#xff0c;以“智能涌现 数开万物”为主题的腾讯科技Hi Tech Day暨2023数字开物大会在北京国家会议中心召开&#xff0c;腾讯科技邀请知名院士、知名经济学家、知名大学教授、研究院院长、产业大咖、互联网大厂高管、知名科技领域头部企业高管、产业数字化…

网络协议 - UDP 协议详解

网络协议 - UDP 协议详解 UDP概述UDP特点UDP的首部格式UDP校验 參考文章 基于TCP和UDP的协议非常广泛&#xff0c;所以也有必要对UDP协议进行详解。 UDP概述 UDP(User Datagram Protocol)即用户数据报协议&#xff0c;在网络中它与TCP协议一样用于处理数据包&#xff0c;是一种…

【Spark精讲】Spark与MapReduce对比

目录 对比总结 MapReduce流程 ​编辑 MapTask流程 ReduceTask流程 MapReduce原理 阶段划分 Map shuffle Partition Collector Sort Spill Merge Reduce shuffle Copy Merge Sort 对比总结 Map端读取文件&#xff1a;都是需要通过split概念来进行逻辑切片&…

dbeaver导出数据为excel格式

dbeaver导出excel 目前数据的可选择只有这几种 恰好没有我们需要的excel模式,而我们需要数据一般都需要excel的 所以我们可以通过以下步骤得到我们的excel格式的数据集: 1.直接选csv模式,至于csv有陌生的小伙伴可以理解:CSV&#xff08;Comma-Separated Values&#xff09;是…

同时获取el-select的label和value

ui如下&#xff1a; 需求如下&#xff1a; 在点击确认的时候&#xff0c;将id和name都传给一个接口&#xff0c;但是ui只用展示name&#xff0c;name用v-model绑定给input框&#xff0c;但是id不知道怎么传给后端。 解决方法如下&#xff1a; vue中elementUi的el-select同时…

解决kernel32.dll丢失的修复方式,kernel32.dll预防错误的方法

kernel32.dll文件是电脑中的一个重要文件&#xff0c;如果电脑出现kernel32.dll丢失的错误提示&#xff0c;那么电脑中的一些程序将不能正常使用&#xff0c;那么出现这样的问题有什么解决办法呢&#xff1f;那么今天就和大家说说解决kernel32.dll丢失的修复方式。 一.kernel32…

MySql踩坑记录 DATE_FORMAT函数

使用场景&#xff1a;进行某一日期范围内的数据查询 查询结果&#xff1a;空&#xff0c;查询不到符合条件的数据。 Sql展示&#xff1a; SELECTa.dt_plan AS planDate,a.sd_status AS planStatus FROMc_hpl_plan a WHEREa.id_phr 6576727112f1a21849639530 -- 第一种写法…

STM32 寄存器配置笔记——I2C 读写AT24C02 EEPROM

一、简介 本文主要介绍STM32F10xx系列如何使用软件模拟I2C总线读写AT24C02的EEPROM数据。 二、概述 I2C协议是一种用于同步、半双工、串行总线(由单片机时钟线、单数据交换器数据线组成)上的协议。规定了总线空闲状态、起始条件、停止条件、数据有效性、字节格式、响应确认信号…

c# 为什么修改Font导致Location 变化

搜索引擎、各种人工智能&#xff0c;只有这个帮我解决了问题 然后我发现了这个 我就奇怪&#xff0c;一行行调试代码&#xff0c;最终发现设置Font&#xff0c;Location就变了&#xff0c;完全想不通

Linux 创建分区

要求 分一个区就行&#xff0c;用 ext4 文件系统&#xff0c;挂到 /data 目录。 查看 lsblk sdb 没有分区 创建分区 [rootlocalhost ~]# ll /dev/sd* brw-rw----. 1 root disk 8, 0 2月 27 15:10 /dev/sda brw-rw----. 1 root disk 8, 1 2月 27 15:10 /dev/sda1 brw-rw-…

【vue】jenkins打前端包时报错:第 8 行:cd: dist: 没有那个文件或目录

问题描述 jenkins打前端包时报错&#xff1a;第 8 行&#x1f4bf; dist: 没有那个文件或目录 Jenkins中 “Execute shell” 配置的脚本&#xff1a; echo $PATH node -v npm -v npm config set registry http://ued.edtsoft.com/ npm install npm run build:prod cd dist rm…

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

PostgreSQL向量数据插件--pgvector安装 一、版本二、数据库安装1. 在官网下载PostgreSQL14.0的安装包2.增加用户postgres3.解压安装 三、pgvector安装1. 从github上克隆下来2. 安装pgvector插件3. 开始使用pgvector启用pgsql命令行创建扩展 本文为本人在安装pgvector中踩过的坑…

Github2023-12-15 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-15统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目3非开发语言项目3JavaScript项目1Python项目1Rust项目1PHP项目1 基于项目的学习 创建周期&am…

【通用】Linux,VSCode,IDEA,Eclipse等资源相对位置

正文 不论是 IDEA、Linux、VSCode、cmd等等吧&#xff0c;都遵循这个规则&#xff1a; 如果以斜杠开头&#xff0c;表示从根开始找&#xff1a; IDEA的根是classpath&#xff08;classpath就是项目被编译后&#xff0c;位于 target下的 classes文件夹&#xff0c;或者位于ta…

QT笔记(节选)具体图片等下载资源

QT笔记&#xff08;节选&#xff09;具体图片等下载资源 根据b站视频做的笔记&#xff1a; https://www.bilibili.com/video/BV1g4411H78N?p44&spm_id_frompageDriver&vd_sourcea3e6a48ccd3d7d1f969f662653ed68c9 qt是一个跨平台的c图形用户界面应用程序框架&#x…

编程导航算法通关村——算法基础

目录 1. 时间复杂度 1.1. 时间复杂度概念 1.2. 几种常见的阶 1.2.1. 常数阶 O(1) 1.2.2. 线性阶 O(n) 1.2.3. 平方阶 (n) 1.2.4. 对数阶 O(logn) 2. 最坏情况和平均情况 3. 空间复杂度 1. 时间复杂度 1.1. 时间复杂度概念 当我们说算法的时间复杂度时&#xff0c;我们…

【动手学深度学习】(十四)数据增广+微调

文章目录 一、数据增强1.理论知识2.代码 二、微调1.理论知识 一、数据增强 1.理论知识 增加一个已有数据集&#xff0c;使得有更多的多样性 在语言里面加入各种不同的背景噪音改变图片的颜色和形状 使用增强数据训练 翻转 左右翻转上下翻转 不总是可行 切割 从图片中切…

【数据结构和算法】判断子序列

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;双指针 三、代码 3.1 方法一&#xff1a;双指针 3.1.1 Java易懂版&#xff1a;…

解决Chrome同一账号在不同设备无法自动同步书签的问题

文章目录 一、问题与原因&#xff1f;2. 解决办法 一、问题与原因&#xff1f; 1.问题 使用谷歌Chrome浏览器比较头疼的问题就是&#xff1a;使用同一个Google账号&#xff0c;办公电脑与家用电脑的数据无法同步。比如&#xff1a;办公电脑中的书签、浏览记录等数据&#xff0…

drf入门规范

一 Web应用模式 在开发Web应用中&#xff0c;有两种应用模式&#xff1a; 1.1 前后端不分离 1.2 前后端分离 二 API接口 为了在团队内部形成共识、防止个人习惯差异引起的混乱&#xff0c;我们需要找到一种大家都觉得很好的接口实现规范&#xff0c;而且这种规范能够让后端写…