FastAPI+React全栈开发08 安装MongoDB

news2024/11/19 5:33:49

Chapter02 Setting Up the Document Store with MongoDB

08 Installing MongoDB and friends

FastAPI+React全栈开发08 安装MongoDB

The MongoDB ecosystem is composed of different pieces of software, and I remember that when I was starting to play with it, there was some confusion. It is, in fact, quite straightforward as we will see. Let’s examine the following various components that we will be installing or using in the following part:

  • MongoDB community Edition: a free full-fledged version of MongoDB that runs on all major operating systems (Linux, Windows, or macOS) and it is what we are going to use to play around with data locally.
  • MongoDB Compass: a graphical user interface (GUI) for managing, querying, aggregating, and analyzing MongoDB data in a visual environment. Compass is a mature and useful tool that we’ll be using throughout our initial querying and aggregation explorations.
  • MongoDB Atlas: the database-as-a-service solution from MongoDB. To be honest, this is one of the main resons MongoDB is a huge part of the FARM stack. It is relatively easy to set up and it relieves us from manually administering the database.
  • MongoDB Shell: a command line shell that we can use not only to perform simple Create, Read, Update, Delete (CRUD) operations on our database, but also to perform administrative tasks such as creating and deleting databases, starting and stopping services, and similar job.
  • MongoDB Database Tools: serveral command line utilities that enable administrators and developers to export or import data to and from a database, provide diagnostics, or enable manipulation of files stored in MongoDB’s GridFS system.

MongoDB的生态系统是由不同的软件组成的,我记得当我开始使用它的时候,有一些困惑。事实上,我们会看到,这很简单。让我们检查一下我们将在以下部分中安装或使用的以下各种组件:

  • MongoDB社区版:一个免费的完整版本的MongoDB,运行在所有主要的操作系统(Linux, Windows,或macOS)上,这是我们要用它来玩本地数据。
  • MongoDB Compass:一个图形用户界面(GUI),用于在可视化环境中管理、查询、聚合和分析MongoDB数据。Compass是一个成熟而有用的工具,我们将在最初的查询和聚合探索中使用它。
  • MongoDB Atlas: MongoDB的数据库即服务解决方案。说实话,这是MongoDB成为FARM堆栈重要组成部分的主要原因之一。它的设置相对容易,并且使我们不必手动管理数据库。
  • MongoDB Shell:一个命令行Shell,我们不仅可以使用它来执行简单的创建、读取、更新、删除(CRUD)操作,还可以执行管理任务,如创建和删除数据库,启动和停止服务,以及类似的工作。
  • MongoDB数据库工具:几个命令行实用程序,使管理员和开发人员能够从数据库导出或导入数据,提供诊断,或允许操作存储在MongoDB的GridFS系统中的文件。

The MongoDB ecosystem is constantly evolving, and it is quite possible that when you read these pages, the latest version numbers will be higher or some utility might have changed its name. MongoDB recently released a product called Realm, which is a real-time development platform useful for building mobile apps or Internet of Thins(IoT) applications, for instance. We will not cover all of the steps necessary to install all the required software as we do not find a huge stack of screenshots particularly inspiring. We will instead focus on the overall procedure and try to pinpoint they key steps that are necessary in order to have a fully functional installation.

MongoDB的生态系统是不断发展的,很有可能当你阅读这些页面时,最新的版本号会更高,或者一些实用程序可能已经更改了它的名称。MongoDB最近发布了一个名为Realm的产品,这是一个实时开发平台,可用于构建移动应用程序或物联网(IoT)应用程序。我们不会涵盖安装所有所需软件所需的所有步骤,因为我们不会发现大量的截图特别鼓舞人心。相反,我们将重点放在整个过程上,并试图找出必要的关键步骤,以便有一个完整的功能安装。

Installing MongoDB and Compass on Docker

查询6.x的版本:
https://hub.docker.com/_/mongo/tags?page=1&name=6.

在这里插入图片描述

这里,我选择的版本是:6.0.14-jammy

拉取镜像:

docker pull mongo:6.0.14-jammy

创建容器:

docker run --name mongo -d --restart=always -p 27017:27017 mongo:6.0.14-jammy

之后使用python进行连接测试:

import time

from mongo6.pymongo import MongoClient

# 会开进程,主进程需要等待
client = MongoClient('mongodb://zhangdapeng:zhangdapeng520@192.168.77.129:27017/')
print(client)

# 等待1秒钟
time.sleep(1)
print("建立连接成功:", client)

安装MongoDB Compass

下载:https://www.mongodb.com/products/tools/compass

在这里插入图片描述

选择Windows版本:
在这里插入图片描述

双击启动:
在这里插入图片描述

进行连接:
在这里插入图片描述

Importing and exporting data with Compass

Now, we cannot have even a vague idea of what we can or cannot do with our data if we don’t have any data to begin with. In the GitHub repository of the book, in the chapter2 folder, you will find a comma-separated values (CSV) file called cars_data.csv.

现在,如果我们一开始没有任何数据,我们甚至不能有一个模糊的概念,我们可以或不可以用我们的数据做什么。在本书的GitHub存储库中,在chapter2文件夹中,您将找到一个名为cars_data.csv的逗号分隔值(CSV)文件。

Click on the Create Database button and insert the database name carsDB and the collection name cars, as follows.

单击Create Database按钮并插入数据库名称carsDB和集合名称cars,如下所示。

在这里插入图片描述

After this step, a new database should be available in the left-hand menu, called carsDB. Select this database on the left and you will see that we created a collection called cars. In fact, we connot have a database without collections. There is a big Import Data button in the middle, and you will use it to open a dialog as follows.

在此步骤之后,左侧菜单中应该有一个名为carsDB的新数据库。选择左边的这个数据库,您将看到我们创建了一个名为cars的集合。事实上,没有集合就没有数据库。中间有一个大的Import Data按钮,您将使用它打开一个对话框,如下所示。

在这里插入图片描述

After hiting the Import Data button, locate the previously downloaded CSV file and you will be presented with the opportunity to tune the types of the individual columns as follows.

单击Import Data按钮后,找到之前下载的CSV文件,您将有机会按照如下方式调整各个列的类型。

在这里插入图片描述

This is important, especially because we’re importing initial data and we do not want to have integers or floating numbers being interpreted as strings. The MongoDB drivers, such as Motor and PyMongo, that we will be using are “smart” enough to figure out the appropriate data types; however, when dealing with Compasss or similar GUI database tools, it is impreative that you take the time to examine all of the data columns and select the appropriate data types.

这一点很重要,特别是因为我们正在导入初始数据,并且我们不希望将整数或浮点数解释为字符串。我们将使用的MongoDB驱动程序(如Motor和PyMongo)足够“智能”,可以找出适当的数据类型;但是,在使用compass或类似的GUI数据库工具时,您必须花时间检查所有数据列并选择适当的数据类型。

This particular file that we imported contains data about 7323 cars and the default for all the fields is string. We made the following modifications when importing:

  • Set the columns year,price,km,kW,cm3, and standard to Number
  • Set the imported and registered columns to Boolean

我们导入的这个特定文件包含7323辆汽车的数据,所有字段的默认值都是string。我们在导入时做了如下修改:

  • 将“year”、“price”、“km”、“kW”、“cm3”和“standard”列设置为“Number”
  • 将imported 和imported 的列设置为Boolean

在这里插入图片描述

The names of the columns are pretty self-explanatory, but we will examine them more later. Now, once you hit the Import button, you should have a pretty decent collection with a little over 7000 documents, each having an identical structure that we believe will facilitate the understanding of the operations that we are going to perform later on.

列的名称是不言自明的,但我们将在后面对它们进行更多的研究。现在,单击Import按钮后,您应该有一个相当不错的集合,其中包含7000多个文档,每个文档都具有相同的结构,我们相信这将有助于理解我们稍后要执行的操作。

Later, we will see how we can use Compass to run queries and aggregations and export the data in CSV or JSON formats in a pretty similar way to the import that we just did. We suggest that you play around with the interface and experiment a bit. You can always delete the collection and the database, and then redo our data import from the CSV file from the repository.

稍后,我们将看到如何使用Compass运行查询和聚合,并以CSV或JSON格式导出数据,其方式与我们刚才所做的导入非常相似。我们建议您玩周围的界面和实验一点。您总是可以删除集合和数据库,然后从存储库的CSV文件中重新导入数据。

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

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

相关文章

I.MX6ULL_Linux_驱动篇(57)linux Regmap API驱动

我们在前面学习 I2C 和 SPI 驱动的时候,针对 I2C 和 SPI 设备寄存器的操作都是通过相关的 API 函数进行操作的。这样 Linux 内核中就会充斥着大量的重复、冗余代码,但是这些本质上都是对寄存器的操作,所以为了方便内核开发人员统一访问 I2C/S…

解决错误LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to

react native pod第三方包或者git clone的时候遇到 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443两种解决方案 方法一 修改计算机网络配置 由于使用 IPv6 的原因,可能会导致这一问题的出现 系统在解析hostname时使用了ipv6 可以配…

Linux:Jenkins全自动持续集成持续部署(4)

在上一章部署好了之后,还需要点击一下才能进行部署,本章的效果是:当gitlab上的代码发生了变化后,我们不需要做任何事情不需要去点击构建按钮,Jenkins直接自动检测变化,然后自动去集成部署Linux:…

【echart】数据可视化

什么是数据可视化? 数据可视化主要目的:借助于图形化手段,清晰有效地传达与沟通信息。 数据可视化可以把数据从冰冷的数字转换成图形,揭示蕴含在数据中的规律和道理。 如何绘制? echarts 图表的绘制,大体分为三步:…

进入消息传递的魔法之门:ActiveMQ原理与使用详解

嗨,亲爱的童鞋们!欢迎来到这个充满魔法的世界,今天我们将一同揭开消息中间件ActiveMQ的神秘面纱。如果你是一个对编程稍有兴趣,但又对消息中间件一知半解的小白,不要害怕,我将用最简单、最友好的语言为你呈…

mysql安装及操作

一、Mysql 1.1 MySQL数据库介绍 1.1.1 什么是数据库DB? DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行…

秋招打卡算法题第一天

一年多没有刷过算法题了,已经不打算找计算机类工作了,但是思来想去,还是继续找吧。 1. 字符串最后一个单词的长度 public static void main(String[] args) {Scanner in new Scanner(System.in);while(in.hasNextInt()){String itemin.nextL…

2024/3/26 C++作业

定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度:int…

Wireshark 抓包

启动时选择一个有信号的网卡双击打开,或者在 捕获选择里打开选择网卡。 然后输出下面的规则就可以抓到报文了。 最上面的三条是建立连接时的三次握手, 下面是发送数据hello 对应两条数据 最下面的4条是断时的4次挥手

【真题解析】题目 3151: 蓝桥杯2023年第十四届省赛真题-飞机降落【C++ DFS 超详解注释版本】

爆搜冥想 暴力枚举每一辆飞机对于每一个飞机都只存在两种情况,可以降落和不可以降落如果可以降落,计算降落后最早可以降落的时间pre,作为下一次递归的传参如果不可以降落,枚举下一辆飞机 注意这辆的降落有盘旋这种量子叠加态&…

mysql刨根问底

索引:排好序的数据结构 二叉树: 红黑树 hash表: b-tree: 叶子相同深度,叶节点指针空,索引元素不重复,从左到右递增排序 节点带data btree: 非叶子节点只存储索引,可…

HTTPS 从懵懵懂懂到认知清晰、从深度理解到落地实操

Https 在现代互联网应用中,网上诈骗、垃圾邮件、数据泄露的现象时有发生。为了数据安全,我们都会选择采用https技术。甚至iOS开发调用接口的时候,必须是https接口,才能调用。现在有部分浏览器也开始强制要求网站必须使用https&am…

Python(Socket) +Unreal(HTTP)

Python(Socket) Unreal(HTTP) python(Socket):UE:Post请求并发送本机IP 上班咯,好久没记笔记了。。。 局域网 UE的apk,请求Python的Socket 跑起Socket ,UE发 …

长安链共识算法切换:动态调整,灵活可变

#功能发布 长安链3.0正式版发布了多个重点功能,包括共识算法切换、支持java智能合约引擎、支持后量子密码、web3生态兼容等。我们接下来为大家详细介绍新功能的设计、应用与规划。 随着长安链应用愈加成熟与广泛,一些在生产中很实用的需求浮出水面。长安…

RabbitMQ 《简单消息》

package com.xzp.rabbitmq.simple; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.xzp.rabbitmq.util.ConnectionUtil; /** * "Hello World!" * 简单消息 * 消息发送者 - R - 发送消息(生产者) …

nandgame中的汇编语言(Assembler Language)

配置一个汇编器,将符号指令转换为二进制机器码。汇编器指令有三个部分:目标、计算和(可选的)跳转条件。目标是操作的输出写入的寄存器。计算是ALU操作。请参阅ALU级别的位模式。跳转条件是将触发跳转的条件。请参阅条件级别以获取…

初识云原生、虚拟化、DevOps

文章目录 K8S虚拟化DevOpsdevops平台搭建工具大数据架构 K8S master 主节点,控制平台,Master节点负责核心的调度、管理和运维,不需要很高性能,不跑任务,通常一个就行了,也可以开多个主节点来提高集群可用度…

AIGC工具系列之——基于OpenAI的GPT大模型搭建自己的AIGC工具

今天我们来讲讲目前非常火的人工智能话题“AIGC”,以及怎么使用目前的AI技术来开发,构建自己的AIGC工具 什么是AIGC? AIGC它的英文全称为(Artificial Intelligence Generated Content),中文翻译过来就是“人工智能生成内容”&…

v4l2采集视频

Video4Linux2(v4l2)是用于Linux系统的视频设备驱动框架,它允许用户空间应用程序直接与视频设备(如摄像头、视频采集卡等)进行交互。 linux系统下一切皆文件,对视频设备的操作就像对文件的操作一样&#xff…

C语言------指针(2)

前面已经向大家介绍了指针的一些基本内容,接下来,就在再我来先大家讲解一下指针的其他内容。 1. 数组名的理解 int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; 在学习数组的过程中,我们肯定会写过以上代码,我们知道 int 是该数组的数…