广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB 入门指南
  • 758
分享到

MongoDB 入门指南

mongodb入门教程MongoDB基础教程mongodb入门经典 2022-12-26 11:12:10 758人浏览 独家记忆
摘要

目录组件结构核心进程数据库工具数据逻辑结构数据库集合文档数据库文件命令行工具使用技巧执行脚本创建 .monGorc.js 文件定制提示信息编辑复杂变量不便使用的集合名称组件结构 核心进程 在 mongoDB 中,核心进程

组件结构

核心进程

mongoDB 中,核心进程主要包含了 mongod、mongos 和 mongosh 三个。

其中最主要的是 mongod 程序,其在不同的部署方案中(单机部署、副本集部署、分片集群部署),通过不同的配置,可以扮演多种不同的角色:

  • 在单机部署中作为数据库服务器(提供所有读写功能)
  • 在副本集部署中,通过配置,可以部署为 Primary 节点(负责写数据,也可以提供查询)、Secondary 节点(从主节点复制数据,也可以提供查询)、以及 Arbiter 节点(不保存数据,主要用于参与选举投票)
  • 在分片集群中,除了在每个分片中扮演上述角色外,还扮演着配置服务器的角色(存储有分片集群的所有元数据信息,mongos 的数据路由分发等都要依赖于它)

在一台服务器上,可以启动多个 mongod 服务。但在实际生产部署中,通常是建议一台服务器部署一个 mongod 实例,这样不仅减少资源竞争,而且服务器故障也不会同时影响到多个服务。

mongos 在分片集群中扮演路由的角色,提供客户端和分片之间的接口。

mongosh 是 MongoDB 集成的交互式 shell 工具。

数据库工具

MongoDB 数据库工具是用于处理 MongoDB 部署的命令行实用程序的集合。数据库工具包括以下二进制文件:

  • 二进制导入导出
    • mongodump: 导出 mongod 数据库的二进制数据
    • mongorestore: 恢复 mongodump 导出文件的数据到 mongod 或 mongos 数据库
    • bsondump: 转换 BSON 导出文件成 JSON 格式
  • 数据导入导出
    • mongoimport: 从外部 JSON、CSV 或 TSV 文件中加载数据
    • mongoexport: 从 mongod 实例中导出数据到 JSON 或 CSV 文件中
  • 诊断工具
    • mongostat: 快速诊断当前运行的 mongod 或 mongos 实例的状态
    • mongotop: 统计 mongod 实例读取和写入数据的时间
  • GridFS 工具
    • mongofiles: 支持在 GridFS 对象中操作 MongoDB 实例中存储的文件

数据逻辑结构

MongoDB 数据逻辑结构分为数据库 database、集合 collection、文档 document 三层 :

  • 一个 mongod 实例中允许创建多个数据库
  • 一个数据库中允许创建多个集合,集合相当于关系型数据库的表
  • 一个集合则是由若干个文档构成,文档相当于关系型数据库的行,是 MongoDB 中数据的基本单元

数据库

一个数据库中可以创建多个集合,原则上应把逻辑相近的集合都放在一个数据库中。

在 MongoDB 中,会有以下几个内建的数据库:

  • admin: 存放有数据库帐号相关信息,在身份验证和授权时使用
  • local: 特定于单个服务器的数据会存储在此数据库中。在副本集中,local 数据库用于存储复制过程中所使用的数据,而其本身不会被复制。
  • config: 用于分片集群环境,存放了分片相关的元数据信息
  • test: 默认创建的测试库,连接 mongod 服务时,如果不指定连接的具体数据库,默认就会连接到 test 数据库

集合

sql 的表不同,集合是动态模式,不需要在读写数据前创建模式就可以使用,集合中的文档也可以拥有不同的字段,随时可以任意增减某个文档的字段。

默认情况下,集合不要求其文档具有相同的模式,但这是一种很好的实践。可以通过使用 MongoDB 的文档验证功能和可用于多种编程语言的对象–文档映射(object-document mapping)库来实现文档验证。

集合由其名称进行标识,集合名称可以是任意 UTF-8 字符串,但有以下限制:

  • 不能是空字符串("")。
  • 不能含有 \0(空字符),这个字符用于表示集合名称的结束
  • 不能以 system. 开头,该前缀为内部集合保留

集合名称使用 . 字符可以创建子集合,用与区分不同组织集合。虽然子集合没有任何特殊属性,但它们很有用,许多 MongoDB 工具整合了子集合。

文档

文档是 MongoDB 中数据的基本存储单元,以一种叫作 BSON 的文档结构表示。

文档中的键值对是有序的,不同序则是不同文档。并且键是区分大小写的,否则也为不同文档。

文档的键是字符串,而值除了字符串,还可以是 IntLongDoubleBoolean数组、嵌入文档等多种类型。

每个文档都有一个默认的 _id 键,它相当于关系型数据库中的主键,这个键的值在同一个集合中必须是唯一的。

_id 键的值默认是 ObjectId 类型,在插入文档的时候,如果用户不设置文档的 _id 值的话,MongoDB 会自动生成一个唯一的 ObjectId 值进行填充。

数据库文件

MongoDB 在 3.2 版本已经将 WiredTiger 作为默认的存储引擎。其作为存储引擎的时候,数据库会有以下存储文件:

  • collection-*.wt: 存储集合的数据
  • index-*.wt: 存储索引的数据
  • WiredTiger: 存储基本配置信息
  • WiredTiger.wt: 存储所有其他集合的元数据信息
  • WiredTiger.lock: 存储进程 ID,用于防止多个进程连接同一个 WiredTiger 数据库
  • WiredTiger.turtle: 存储 WiredTiger.wt 的元数据信息
  • journal: 存储数据库的写日志

命令行工具

MongoDB 提供的 mongosh 是一个 javascript 的 shell,其提供了许多高级功能和自定义功能。

使用技巧

对于 MongoDB 提供的功能,shell 内置了帮助文档,可以输入 help 命令进行访问,使用 db.help() 可以查看数据库级别的帮助文档,使用 db.foo.help() 可以查看集合级别的帮助文档。

在 shell 中使用函数之前,在不使用括号的情况下输入函数名,这样会打印出函数的源代码,这是一个可以查看函数具体行为的好方法。

执行脚本

shell 不止可以直接执行 javascript 的脚本代码,还可以用于执行 JavaScript 的脚本文件,简单执行 mongo script.js 即可。

如果已经进入到 shell 中,可以使用 load() 函数加载 JavaScript 脚本文件。

创建 .mongorc.js 文件

对于需要频繁被加载的脚本,可以将它们添加到 .mongorc.js 中,此文件会在启动 shell 时自动运行。

在更实际一些的场景中,使用此脚本可以设置全局变量,或者为长名称设置一个简短的别名,也可以重写内置函数。

定制提示信息

通过将 prompt 变量设置为一个字符串或函数,可以重写默认的 shell 提示,如下示例:

prompt = function() {
    if (typeof db == 'undefined') {
        return '(nodb)> ';
    }
 
    // 检查最后的数据库操作
    try {
        db.runCommand({getLastError: 1});
    } catch (e) {
        print(e);
    }
 
    return db+"> ";
};

提示函数应该返回一个字符串,通常应该包含对 getLastError 的调用,这样可以捕获输入时的错误,并在 shell 断开连接时自动重新连接。

编辑复杂变量

使用 shell 时,编辑多行的时候不能再编辑前面的行,这对于较大的代码块或对象非常不友好。

为此,可以在 shell 中设置 EDITOR 变量,则可以使用 edit varname 的方式编辑一个变量,完成更改后只需保存并退出编辑器,变量将被重新解析并加载回 shell 中。

不便使用的集合名称

大多数情况下可以使用 db.collectionName 语法来获得一个集合的内容,但如果集合名称是保留字或是无效的 JavaScript 属性名称时,那么此方法就不能正常工作了。

对于上述的情况,可以使用 db.getCollection() 的方式绕过无效属性。

到此这篇关于MongoDB 入门指南的文章就介绍到这了,更多相关MongoDB入门指南内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB 入门指南

本文链接: https://www.lsjlt.com/news/175794.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB 入门指南
    目录组件结构核心进程数据库工具数据逻辑结构数据库集合文档数据库文件命令行工具使用技巧执行脚本创建 .mongorc.js 文件定制提示信息编辑复杂变量不便使用的集合名称组件结构 核心进程 在 MongoDB 中,核心进程...
    99+
    2022-12-26
    mongodb入门教程 MongoDB基础教程 mongodb入门经典
  • MongoDB入门指南
    目录组件结构核心进程数据库工具数据逻辑结构数据库集合文档数据库文件命令行工具使用技巧执行脚本创建 .mongorc.js 文件定制提示信息编辑复杂变量不便使用的集合名称组件结构 核心...
    99+
    2022-12-26
    mongodb入门教程 MongoDB 基础教程 mongodb入门经典
  • PHP入门指南:PHP和MongoDB
    PHP是一种广泛用于Web开发的编程语言。它的应用范围涉及从简单网页到大型Web应用程序的开发。作为一位Web开发人员,深入了解PHP将能够让您最大限度地利用它的潜力。在本篇文章中,我们将探讨如何使用PHP与MongoDB一起开发Web应用...
    99+
    2023-05-20
    PHP编程 PHP入门 MongoDB数据库
  • mongoDB数据库索引快速入门指南
    目录MongoDB 索引1. 开始与准备数据2. 创建索引前3. 创建索引 createIndex4. 创建索引后6.唯一索引与符合索引①唯一索引②复合索引MongoDB 索引 索引...
    99+
    2022-11-13
  • SpringMVC入门指南
    目录 前言 一、什么是SpringMVC 二、MVC架构模式 三、SpringMVC的工作流程 四、SpringMVC核心组件 五、SpringMVC的优势 六、SpringMVC的配置与常用注解 七、SpringMvc请求处理流程、 控...
    99+
    2023-09-05
    spring mybatis java intellij-idea maven servlet
  • LangChain入门指南
    LangChain入门 什么是LangChain如何使用 LangChain?LangChain的模型LangChain 的主要特点使用示例构建语言模型应用程序:LLMPrompt Templ...
    99+
    2023-09-04
    人工智能
  • Spring Boot 入门指南
    目录0x0 前言0x1 简介0x2 Hello World0x3 文件解析pom.xml应用入口类0x4 进阶项目目录编写单元测试开发环境的调试0x5 参考0x0 前言 记得当初放...
    99+
    2022-11-12
  • PHP入门指南:composer
    PHP是一种流行的编程语言,被广泛用于Web开发项目。在使用PHP进行项目开发时,我们经常需要使用许多第三方库和软件包。手动下载和安装这些软件包会变得非常繁琐和困难,这时Composer就派上用场了。Composer是一个PHP的依赖管理工...
    99+
    2023-05-20
    PHP Composer 入门指南
  • PHP入门指南:SQL注入
    PHP入门指南:SQL注入随着互联网的快速发展,Web应用程序越来越普及,其安全性也成为了人们极为关注的问题。SQL注入是 Web应用程序中的一种常见攻击方式,它可以导致严重的安全问题,从而对 Web应用程序的正常运行造成影响。在学习和使用...
    99+
    2023-05-20
    PHP sql注入 入门指南
  • 分享Flutter入门指南
    这篇文章主要讲解了“分享Flutter入门指南”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分享Flutter入门指南”吧!一、基础布局先来看看最常见的一些...
    99+
    2022-10-19
  • PHP入门指南:多态
    PHP是一种常用的编程语言,具有易学、可扩展和开源等优点。其中,多态作为面向对象编程的一个重要概念,在PHP中也占据着十分重要的地位。本文将为大家介绍PHP中的多态概念、实现方法以及其应用。一、多态的概念多态是面向对象编程中的一种重要概念,...
    99+
    2023-05-20
    PHP 多态 入门指南
  • PHP入门指南:数组
    PHP是一种服务器端脚本语言,适用于Web开发,它可以通过处理HTML表单、访问数据库和使用Cookies等方式来创建动态交互性Web页面。在PHP中,数组是一种非常重要的数据类型,本篇文章将为您带来PHP数组的入门指南,并将解释如何在您的...
    99+
    2023-05-20
    PHP 数组 入门指南
  • vue转react入门指南
    目录设计组件通信生命周期事件处理class和styleclassstyle条件渲染列表渲染组件嵌套获取DOM文档结构路由动态路由&路由传参嵌套路由路由跳转路由守卫(登录验证,...
    99+
    2022-11-12
  • PHP入门指南:DOM扩展
    PHP是最常用的网络编程语言之一,其使用广泛,而且应用领域非常广泛。其中,DOM扩展是PHP中用来处理XML文档的一种常用方法。本文将介绍初学者如何使用PHP的DOM扩展来操作XML文档。什么是DOM扩展?DOM(Document Obje...
    99+
    2023-05-25
    PHP 入门指南 DOM扩展
  • PHP入门指南:Symfony框架
    PHP入门指南:Symfony框架由于在Web开发领域中的广泛应用,PHP成为了一门极其重要的编程语言。Symfony框架,作为一个领先的PHP框架,已经赢得了广泛赞誉,它的可扩展性、社区支持以及对面向对象编程的支持使得在开发大型项目时非常...
    99+
    2023-05-20
    PHP 入门指南 Symfony框架
  • PHP入门指南:PHP和Logstash
    首先,让我们简单介绍一下PHP和Logstash是什么。PHP是一种用于Web开发的脚本语言,它广泛应用于服务器端的开发,可用于构建动态网站,Web应用程序和Web服务。它也可以与MySQL和其他数据库一起工作,以便收集和处理数据。而Log...
    99+
    2023-05-20
    PHP 入门指南 Logstash
  • PHP入门指南:PHP和Haskell
    PHP和Haskell是两种非常不同的编程语言,它们的设计思路和用途都不同。在本文中,我们将会介绍PHP和Haskell,以及它们各自的优缺点。同时,我们还将分别介绍如何入门这两种编程语言,并给出一些学习的建议。PHP是一种服务器端的脚本语...
    99+
    2023-05-20
    PHP 入门指南 Haskell
  • PHP入门指南:PHP调试
    PHP是一种流行的编程语言,无论是网站开发还是桌面应用程序开发,PHP的应用都非常广泛。如果你正在学习PHP,那么你应该知道,调试是你编写代码的一个重要环节。在PHP程序中,你可能会遇到各种各样的问题,例如程序运行缓慢、调用无效、服务器响应...
    99+
    2023-05-22
    PHP调试 PHP入门 PHP指南
  • Spark Streaming 编程入门指南
    Spark Streaming 是核心Spark API的扩展,可实现实时数据流的可伸缩,高吞吐量,容错流处理。可以从许多数据源(例如Kafka,Flume,Kinesis或TCP sockets)中提取数据,并且可以使用复杂的算...
    99+
    2022-02-15
    Spark Streaming 编程入门指南
  • PHP入门指南:PHP和Cacti
    PHP是一种流行的服务器端脚本语言,用于Web编程和开发Web应用程序。而Cacti则是一种开源网络监控工具,主要用于收集和分析网络信息。本文将介绍PHP和Cacti并提供一些有用的入门指南。PHP入门指南PHP是一种易于学习和使用的编程语...
    99+
    2023-05-20
    PHP cacti 入门指南
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作