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

news2024/11/24 22:25:05

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

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

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

相关文章

RocketMQ 跟踪消息发送轨迹

目录 概述实践如何启用消息轨迹配置创建Topic代码测试 结束 概述 阅读此文可以解决 RocketMQ 中消息是否发送成功&#xff0c;是否消费成功。 查询消息轨迹可作为生产环境中排查问题强有力的数据支持 &#xff0c;也是研发同学解决线上问题的重要武器之一。 详细如下&#x…

Navicat16 无限试用 亲测有效

Navicat16 无限试用 亲测有效 亲测有效&#xff01;&#xff01;&#xff01; 吐槽下&#xff0c;有的用不了&#xff0c;有的是图片&#xff0c;更甚者还有收费的&#xff0c;6的一批 粘贴下面的代码&#xff0c;保存到桌面&#xff0c;命名为 trial-navicat16.bat echo off…

DDOS攻击方式有哪些,要如何防护

DDOS攻击我们也称之为流量攻击&#xff0c;分布式拒绝服务攻击(英文意思是Distributed Denial of Service&#xff0c;简称DDOS&#xff09;于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者…

【漏洞复现】I Doc View在线文档预览任意文件读取 1day

漏洞描述 I Doc View在线文档预览是一款在线文档预览系统&#xff0c;可以实现文档的预览及文档协作编辑功能。其存在代码执行漏洞&#xff0c;使得攻击者可以通过利用这个接口&#xff0c;触发服务器下载并解析恶意文件&#xff0c;从而导致远程命令执行漏洞。进而控制服务器…

Leetcode—896.单调数列【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—896.单调数列 实现代码 class Solution { public:bool isMonotonic(vector<int>& nums) {int up 0;int down 0;if(nums.size() 1) {return true;}for(int i 0; i < nums.size() - 1; i) {if(nums[i] …

LTC是什么意思?CRM怎样帮助这一流程的实现?

在现代商业环境下&#xff0c;将潜在客户转化成实际销售是公司成功的基石之一。而CRM管理系统是完成LTC的有效工具。本文将向您介绍LTC是什么&#xff1f;公司怎样企业如何通过CRM实现这一流程的&#xff1f; LTC&#xff08;从线索到现金&#xff09;是企业运营管理中的一个重…

go学习之网络编程

文章目录 网络编程1、网络编程的基本介绍2.网络编程的基础知识1&#xff09;协议(tcp/ip)2&#xff09;OSI与TCP/ip参考模型3&#xff09;ip地址4&#xff09;端口(port)介绍5&#xff09;tcp socket编程的客户端和服务器端 3.socket编程快速入门4.经典项目-海量用户即时通讯系…

什么是POM设计模式?

为什么要用POM设计模式 前期&#xff0c;我们学会了使用PythonSelenium编写Web UI自动化测试线性脚本 线性脚本&#xff08;以快递100网站登录举栗&#xff09;&#xff1a; import timefrom selenium import webdriver from selenium.webdriver.common.by import Bydriver …

【媒体开发】利用FFMPEG进行推拉流

目录 1. 下载并启动媒体服务 2. 使用 FFMPEG 拉流并推送到指定服务地址 3. 客户端拉流 1. 下载并启动媒体服务 MediaMTX&#xff0c;也即之前的rtsp-simple-server&#xff0c;是一个即用型、零依赖的实时媒体服务器和媒体代理&#xff0c;允许发布、读取、代理和记录视频和…

react经验8:使用antd的checkbox实现全选与半选控制

预期实现的效果 列表项部分选中时&#xff0c;checkall处于半选状态&#xff0c;点击checkall要么全选&#xff0c;要么全不选。 实现步骤 列表项类型 declare type TableRow {key: Keytitle: stringisSelected?: boolean }示范数据 const [tabledata, setTabledata] u…

HarmonyOS4.0从零开始的开发教程16数据管理

HarmonyOS&#xff08;十四&#xff09;数据管理 1 概述 在移动互联网蓬勃发展的今天&#xff0c;移动应用给我们生活带来了极大的便利&#xff0c;这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置&#xff0c;HarmonyOS应用开发也不例外…

低功耗蓝牙模块常见天线输出方式及选型建议

随着互联网技术的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;已经渗透到了我们生活的方方面面。作为物联网的关键技术之一&#xff0c;BLE&#xff08;低功耗蓝牙&#xff09;技术在汽车电子、智能家居、穿戴设备、工业自动化等领域发挥着举足轻重的作用。深圳市信…

一入二出热电阻温度信号隔离变送器

一入二出热电阻温度信号隔离变送器 用于测量铂热电阻Pt10,Pt100,Pt1000,Cu50,Cu100的热电阻传感器的小型仪器设备。广泛应用于工业测量温度系统&#xff0c;是降低成本且有效的测量方式。 型号&#xff1a;JSD TARZ-1002系列 我们来看下有什么特点&#xff1a; ◆小体积&#x…

ShenYu网关注册中心之Zookeeper注册原理

文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解&#xff0c;注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…

今天最新早上好问候语,清晨阳光暖心的早安问候语录

1、花以芳香而美&#xff0c;人以真诚而贵。心以善良而德&#xff0c;缘以相识而聚。彼此保重&#xff0c;相约美好。每一个清晨&#xff0c;都是快乐的开始。早安吉祥&#xff01; ​ 2、拿起手机想到你&#xff0c;我把祝福送给你&#xff0c;虽然天天在重复&#xff0c;证明…

算法 - 无重复字符的最长子串(03)

原理&#xff1a; 定义左右两个指针&#xff0c;保证两个指针对应的子串中没有重复的字符&#xff0c;寻找并记录最长的子串长度。如果窗口满足条件&#xff0c;右指针向右滑动扩大窗口&#xff0c;更新最优值&#xff1b;如果窗口不满足条件&#xff0c;左指针向右缩小窗口。…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

L1-041:寻找250

题目描述 对方不想和你说话&#xff0c;并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式&#xff1a; 输入在一行中给出不知道多少个绝对值不超过1000的整数&#xff0c;其中保证至少存在一个“250”。 输出格式&#xff1a; 在一行中…

移植Modelsim仿真工程

背景 上班在公司用的PC1生成并完整的进行了仿真&#xff0c;打包成zip&#xff0c;经过微信传输并在家里的PC2上打开想要继续进行仿真&#xff0c;需要如何处理呢&#xff1f; 环境 软件路径公司PC1Quartus II Prime Pro 21.4C:\intelfpga_pro\21.4\quartus\bin64\qpro.exeMo…

Nginx与keepalived高可用节点搭建实验

本文主要介绍了nginxkeepalived的部署实验&#xff0c;并简单说明了nginx的集中负载分担模式 简介&#xff1a; nginx可以通过反向代理功能对后端服务器实现负载均衡功能 keepalived 是一种高可用集群选举软件 keepalived架构 分为三个模块&#xff1a; 1、keepalived core …