MongoDB简介

news2025/1/16 13:45:45

目录

1、NoSQL概述

2、什么是MongoDB

3、MongoDB特点

一、MongoDB安装(docker方式)

二、MongoDB安装(普通方式)

三、MongoDB 概念解析

1、NoSQL概述

NoSQL(NoSQL = Not Only SQL),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入

为什幺使用NoSQL :

1、对数据库高并发读写。

2、对海量数据的高效率存储和访问。

3、对数据库的高可扩展性和高可用性。

弱点:

1、数据库事务一致性需求

2、数据库的写实时性和读实时性需求

3、对复杂的SQL查询,特别是多表关联查询的需求

2、什么是MongoDB

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

 

3、MongoDB特点

1、MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。

2、你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。

3、你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

4、如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。

5、Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

6、MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。

7、Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。

8、Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。

9、Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。

10、GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

11、MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。

12、MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

13、MongoDB安装简单。

一、MongoDB安装(docker方式)

1、拉取镜像

docker pull mongo:latest

或者

docker pull mongo:4.4.8

 

2、创建和启动容器

(1)对data目录授权

chmod 777 data

(2)创建和启动容器

docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo

或者

docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo:4.4.8

3、进入容器

docker exec -it mymongo /bin/bash

4、使用MongoDB客户端进行操作

mongo

 

show dbs#查询所有的数据库

二、MongoDB安装(普通方式)

参考资料中《mongodb安装文档》

三、MongoDB 概念解析

不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们详细介绍,下表将帮助您更容易理解Mongo中的一些概念:

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

 

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

1、数据库

一个mongodb中可以建立多个数据库,常用操作如下:

(1)Help查看命令提示

db.help();

(2)切换/创建数据库

use test

如果数据库不存在,则创建数据库,否则切换到指定数据库

(3) 查询所有数据库

show dbs;

(4)删除当前使用数据库

db.dropDatabase();

(5)查看当前使用的数据库

db.getName();

(6)显示当前db状态

db.stats();

(7)当前db版本

db.version();

(8) 查看当前db的链接机器地址

db.getMongo();

2、文档

文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

下表列出了 RDBMS 与 MongoDB 对应的术语:

RDBMS

MongoDB

数据库

数据库

表格

集合

文档

字段

表联合

嵌入文档

主键

主键 (MongoDB 提供了 key 为 _id )

需要注意的是:

1、文档中的键/值对是有序的。

2、文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。

3、MongoDB区分类型和大小写。

4、MongoDB的文档不能有重复的键。

5、文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

文档键命名规范:

1、键不能含有\0 (空字符)。这个字符用来表示键的结尾。

2、.和$有特别的意义,只有在特定环境下才能使用。

3、以下划线"_"开头的键是保留的(不是严格要求的)。

3、集合

集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

常用命令:

1、 创建一个集合(table)

db.createCollection( "collName");

2、 得到指定名称的集合(table )

db.getCollection("user");
4、MongoDB的数据类型

数据类型

描述

String

字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。

Integer

整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。

Boolean

布尔值。用于存储布尔值(真/假)。

Double

双精度浮点值。用于存储浮点值。

Min/Max keys

将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。

Arrays

用于将数组或列表或多个值存储为一个键。

Timestamp

时间戳。记录文档修改或添加的具体时间。

Object

用于内嵌文档。

Null

用于创建空值。

Symbol

符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。

Date

日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。

Object ID

对象 ID。用于创建文档的 ID。

Binary Data

二进制数据。用于存储二进制数据。

Code

代码类型。用于在文档中存储 JavaScript 代码。

Regular expression

正则表达式类型。用于存储正则表达式。

5、MongoDB适用场景

适用场景

1、网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

2、缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。

3、大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

4、高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对Map Reduce弓摩的内置支持。

5、用于对象及 JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。

不适用场合

1、高度事务性系统:例如银行系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

2、传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

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

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

相关文章

FcaNet: Frequency Channel Attention Networks论文总结

论文:https://arxiv.org/abs/2012.11879 中文版:FcaNet: Frequency Channel Attention Networks 源码:https://github.com/cfzd/FcaNet或https://gitee.com/yasuo_hao/FcaNet 一、论文背景和出发点 问题:许多工作都集中在如何设计…

【T+】安装畅捷通T+提示安装向导找不到环境检测工具,是否手动选择环境检测工具文件夹。

【问题描述】 在windows server 2008r2系统环境下, 安装畅捷通T专属云标准版18.0软件的时候,提示: 安装向导找不到环境检测工具,是否手动选择环境检测工具文件夹(CheckEnvironment) 点击【是】手动选择&…

leetcode数据库题第六弹

leetcode数据库题第六弹 626. 换座位1280. 学生们参加各科测试的次数1321. 餐馆营业额变化增长1327. 列出指定时间段内所有的下单产品1341. 电影评分1378. 使用唯一标识码替换员工ID1393. 股票的资本损益1407. 排名靠前的旅行者1484. 按日期分组销售产品1517. 查找拥有有效邮箱…

数字基带传输

常用码型: 为了适应信道的传输,传输码型必须具备以下基本特性: 1)无直流、很少的低频分量; 2)含有码元定时信息; 3)主瓣宽度窄; 4)适用于各种信源的…

ChatGPT从入门到精通,一站式掌握办公自动化/爬虫/数据分析和可视

课程名称适应人群ChatGPT从入门到精通,一站式掌握办公自动化/爬虫/数据分析和可视 全面AI时代就在转角,道路已经铺好了“局外人”or“先行者”就在此刻等你决定 1、对ChatGPT感兴趣并希望有人手把手教学的新手 2、希望了解GPT各类应用抓住未来风口 3、希…

【软件设计师暴击考点】UML知识高频考点暴击系列

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

【Android Framework系列】第2章 Binder机制大全

1 Binder简介 1.1 什么是Binder Binder是Android中主要的跨进程通信方式。Android系统中,每个应用程序是由Android的Activity,Service,BroadCast,ContentProvider这四剑客中一个或多个组合而成,这四剑客所涉及的多进程…

【瑞萨RA_FSP】IWDT——独立看门狗定时器

文章目录 一、IWDT简介二、IWDT功能框图剖析1. IWDT 时钟源(1) 计数器时钟(2) 独立看门狗超时时间计算 2. IWDT 模块电路功能讲解3. 独立看门狗(IWDT)与看门狗(WDT)功能对比4. 怎么使用IWDT 三、IWDT实验1. 硬件设计2. 文件结构3.…

交通 | 考虑供需交互下的航空网络优化问题

编者按: 本文提出了一种包含供需交互作用的航空网络规划模型 (ANPSD),该模型同时考虑了航线选择、航班频率和机队组成等问题,还捕捉了航空公司的供应和乘客需求之间的相互依赖关系。作者将需求实证函数与 ANPSD 模型相结合,开发了…

代码随想录算法训练营第四十四天|完全背包、518. 零钱兑换 II 、377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

【数据结构】顺序表,链表

前言 小亭子正在努力的学习编程,接下来将开启 javaEE 的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 目录 前言 顺序表 ArrayList ArrayLi…

K8S存储值之PV和PVC

1. 概念: 1.1. PersistentVolume (PV): 是由管理员设置的存储,它是群集的一部分。就像节点是集群中的资源一样,PV也是集群中的资源。PV是Volume之类的卷插件,但具有独立于使用PV的Pod的生命周期。此API对象包含存储实…

数字图像处理-图像复原与重建

文章目录 一、图像退化/复原过程的模型二、噪声模型2.1噪声的空间和频率特性2.2一些重要的噪声概率密度函数2.2.1高斯噪声2.2.2瑞利噪声2.2.3爱尔兰(伽马)噪声2.2.4指数噪声2.2.5均匀噪声2.2.6脉冲(椒盐)噪声 2.3周期噪声 三、只存…

【ABAP】数据类型(四)「类型组TYPE-POOL」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…

基于电容电流前馈与电网电压全前馈的三相LCL并网逆变器谐波抑制MATLAB仿真

基于电容电流前馈+电网电压全前馈的三相并网逆变器谐波抑制MATLAB仿真资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87940934模型简介: 测试环境为MATLAB2021b 一共包含两个模型:一个是传统无改进模型,一个…

chatgpt赋能python:Python画运动轨迹:探索世界的足迹

Python画运动轨迹:探索世界的足迹 作为一门快速发展的编程语言,Python在数据分析、机器学习、Web开发等多个领域中发挥着举足轻重的作用。其中,画运动轨迹是Python可视化库中较为常见的应用之一。本文将介绍使用Python画运动轨迹的方法&…

chatgpt赋能python:Python画点函数:如何绘制并掌握基础图形?

Python画点函数:如何绘制并掌握基础图形? Python是一个极为强大的编程语言,它可以用来编写各种应用程序,包括绘图。绘图是Python的重要特性之一,它提供了各种绘图函数,包括画点函数。Python的画点函数是一…

chatgpt赋能python:Python的frozenset:一种不可变的集合类型

Python的frozenset:一种不可变的集合类型 在Python中,集合是一种基本的数据类型。它们是无序的、可变的、且不允许重复的元素。但是,有时候我们需要一个不可变的集合,即一旦创建就不允许进行修改操作的集合。这就是frozenset的作…

【STM32 】芯片命名、内核、产品系列

文章目录 一、半导体公司介绍二、STM32 芯片2.1 芯片命名2.2 Cortex-M内核2.3 STM32 系列 一、半导体公司介绍 STM32是STMicroelectronics(意法半导体)公司的一系列32位微控制器,基于ARM Cortex-M内核,具有高性能、低功耗、丰富的…

【软件设计师暴击考点】软件工程知识高频考点【二】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…