10 Python进阶:MongoDB

MongoDb介绍

在这里插入图片描述

MongoDB是一个基于分布式架构的文档数据库,它使用JSON样式的数据存储,支持动态查询,完全索引。MongoDB是NoSQL数据库的一种,主要用于处理大型、半结构化或无结构化的数据。以下是MongoDB数据库的一些关键特点和优势:

  1. 分布式架构: MongoDB可以运行在多个服务器上,以实现高可用性和可伸缩性,允许数据存储在集群中的不同节点上。

  2. 文档数据库: MongoDB使用类似JSON格式的BSON(Binary JSON)来存储数据,每个文档都是一个数据记录,这些文档可以包含不同结构和类型的数据。

  3. 动态查询: MongoDB支持丰富的查询操作,它使用内置的聚合框架来实现复杂的数据分析和数据处理。

  4. 完全索引: MongoDB支持创建多种类型的索引,包括单字段、复合字段和地理空间索引,以提高查询性能和灵活性。

  5. 分片和复制: MongoDB可以通过分片将数据水平划分为多个部分,同时还支持数据复制来提供数据可靠性和可用性。

  6. 丰富的功能: MongoDB提供了丰富的功能,包括灵活的数据模型、强大的聚合框架、自动分片和负载均衡等。

MongoDB是一个灵活、高性能、可扩展的数据库系统,特别适合用于处理大规模、半结构化或无结构化的数据,例如Web应用程序、日志存储、内容管理,以及实时分析等场景。

PyMongo 安装和测试

PyMongo是Python与MongoDB数据库交互的官方驱动程序,可以让Python开发人员方便地与MongoDB数据库进行连接、查询和操作。下面是关于PyMongo的介绍以及如何安装和测试PyMongo的简单示例:
在这里插入图片描述

PyMongo介绍:

  • PyMongo是MongoDB官方提供的Python驱动程序,提供了高效的API来与MongoDB进行交互。
  • PyMongo支持对MongoDB数据库进行连接、插入数据、查询数据、更新数据、删除数据等操作。
  • PyMongo贴合Python开发者的习惯和使用方式,使得在Python应用程序中操作MongoDB更加便捷。

安装PyMongo:

你可以使用pip命令来安装PyMongo,运行以下命令:

pip install pymongo

测试PyMongo:

以下是一个简单的PyMongo测试示例,实现连接到MongoDB数据库、插入数据、查询数据的功能:

import pymongo

运行上述代码,导入不报错即可。

创建数据库

在MongoDB中,可以通过连接到数据库并查询数据库的方式来判断数据库是否已存在,如果不存在则创建数据库。下面是一个使用PyMongo实现这一功能的示例代码:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")# 列出所有数据库
database_list = client.list_database_names()# 要创建的数据库名称
database_name = "mydatabase"# 判断数据库是否已存在
if database_name in database_list:print(f"数据库 {database_name} 已经存在。")
else:# 创建数据库db = client[database_name]print(f"数据库 {database_name} 创建成功。")# 重新列出所有数据库,检查是否成功创建
print(client.list_database_names())

运行以上代码后,它会连接到本地MongoDB数据库,列出所有数据库的名称,然后判断要创建的数据库是否已存在。如果数据库已存在,则输出提示信息;如果数据库不存在,则创建该数据库并输出成功创建的提示信息,并重新列出所有数据库,以确认新数据库是否已成功创建。

通过这种方式,你可以在PyMongo中判断数据库是否已存在,如果不存在则创建数据库。

创建集合

在MongoDB中,可以通过集合是否存在来判断数据库中的集合是否已存在,如果不存在则创建新集合。下面是一个使用PyMongo实现这一功能的示例代码:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")# 选择要操作的数据库
db = client["mydatabase"] # 要创建的集合名称
collection_name = "customers"# 列出所有集合
collection_list = db.list_collection_names()# 判断集合是否已存在
if collection_name in collection_list:print(f"集合 {collection_name} 已经存在。")
else:# 创建集合db.create_collection(collection_name)print(f"集合 {collection_name} 创建成功。")# 重新列出所有集合,检查是否成功创建
print(db.list_collection_names())

运行以上代码后,它会连接到本地MongoDB数据库,并选择操作名为"mydatabase"的数据库。然后,它会列出数据库中的所有集合名称,判断要创建的集合是否已存在。如果集合已存在,则输出提示信息;如果集合不存在,则创建该集合并输出成功创建的提示信息,并重新列出所有集合名称,以确认新集合是否已成功创建。

在MongoDB中使用PyMongo,可以通过不同的方式向集合中插入文档(数据)。以下是几种常见的插入文档的方式:

1. 插入单个文档:

你可以使用insert_one()方法向集合中插入单个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]data = { "name": "Alice", "age": 30, "city": "Shanghai" }
insert_result = collection.insert_one(data)
print("Inserted data with ID:", insert_result.inserted_id)

2. 插入多个文档:

使用insert_many()方法可以向集合中插入多个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]data_list = [{ "name": "Bob", "age": 25, "city": "Beijing" },{ "name": "Cathy", "age": 35, "city": "Guangzhou" }
]insert_result = collection.insert_many(data_list)
print("Inserted data with IDs:", insert_result.inserted_ids)

3. 使用save()方法插入文档:

你也可以使用save()方法向集合中插入文档,如果文档存在则更新,不存在则插入。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]data = { "name": "David", "age": 40, "city": "Chengdu" }
insert_result = collection.save(data)
print("Inserted or updated data with ID:", data["_id"])

这些是向MongoDB集合中插入文档的几种常见方法。根据具体需求不同,选择适合的方法来插入数据。

在MongoDB中使用PyMongo,你可以通过不同的方法删除集合中的文档。以下是几种常见的删除文档的方式:

1. 删除单个文档:

你可以使用delete_one()方法删除符合特定条件的单个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]query = { "name": "Alice" }
delete_result = collection.delete_one(query)
print(delete_result.deleted_count, "document deleted.")

2. 删除多个文档:

使用delete_many()方法可以删除符合特定条件的多个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]query = { "age": { "$lt": 30 } }
delete_result = collection.delete_many(query)
print(delete_result.deleted_count, "documents deleted.")

3. 删除集合中所有文档:

如果你想一次性清空整个集合,可以使用delete_many({})方法删除集合中的所有文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]delete_result = collection.delete_many({})
print(delete_result.deleted_count, "documents deleted.")

这是向MongoDB集合中删除文档的几种常见方法。

在MongoDB中使用PyMongo,你可以通过不同的方法修改集合中的文档。以下是几种常见的修改文档的方式:

1. 更新单个文档:

你可以使用update_one()方法来更新符合特定条件的单个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]filter_query = { "name": "Alice" }
update_query = { "$set": { "age": 31 } }update_result = collection.update_one(filter_query, update_query)
print(update_result.modified_count, "document updated.")

2. 更新多个文档:

使用update_many()方法可以更新符合特定条件的多个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]filter_query = { "city": "Shanghai" }
update_query = { "$set": { "city": "Beijing" } }update_result = collection.update_many(filter_query, update_query)
print(update_result.modified_count, "documents updated.")

3. 替换文档:

使用replace_one()方法可以替换符合特定条件的单个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]filter_query = { "name": "Bob" }
replacement_doc = { "name": "Bobby", "age": 26, "city": "Hangzhou" }replace_result = collection.replace_one(filter_query, replacement_doc)
print(replace_result.modified_count, "document replaced.")

这些是在MongoDB中修改文档的几种常见方法。根据具体需求,选择适合的方法来修改数据。

在MongoDB中使用PyMongo,你可以通过不同的方法查询集合中的文档。以下是几种常见的查询文档的方式:

1. 查询单个文档:

使用find_one()方法可以查询符合特定条件的单个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]query = { "name": "Alice" }result = collection.find_one(query)
print(result)

2. 查询多个文档:

使用find()方法可以查询符合特定条件的多个文档。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]query = { "age": { "$gt": 25 } }results = collection.find(query)
for result in results:print(result)

3. 简单查询:

你还可以进行更简单的查询,例如查询所有文档、对查询结果进行排序等操作。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]# 查询所有文档
results = collection.find()
for result in results:print(result)# 查询所有文档并按年龄降序排序
results = collection.find().sort("age", pymongo.DESCENDING)
for result in results:print(result)

这些是在MongoDB中查询文档的几种常见方法。根据具体需求,选择适合的方法来查询数据。

排序

在MongoDB中使用PyMongo,你可以使用sort()方法对查询结果进行排序。以下是一些常见的排序示例:

1. 升序排序:

要对特定字段进行升序排序,可以使用pymongo.ASCENDING或者1表示升序。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]# 对age字段进行升序排序
results = collection.find().sort("age", pymongo.ASCENDING)
for result in results:print(result)

2. 降序排序:

要对特定字段进行降序排序,可以使用pymongo.DESCENDING或者-1表示降序。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]# 对age字段进行降序排序
results = collection.find().sort("age", pymongo.DESCENDING)
for result in results:print(result)

3. 多重排序:

如果需要按照多个字段进行排序,可以在sort()方法中指定多个字段和对应的排序方式。示例代码如下:

import pymongo# 连接到本地MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]# 先按age字段降序排序,再按name字段升序排序
results = collection.find().sort([("age", pymongo.DESCENDING), ("name", pymongo.ASCENDING)])
for result in results:print(result)

以上是对MongoDB查询结果进行排序的示例代码。根据具体需求,在查询时添加适当的排序操作即可

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s单节点部署,容器运行时使用containerd

环境 系统 : entOS Linux release 7.9.2009 (CoreIP:192.168.44.177 硬件要求:控制平面最少需要 2c2g 安装前环境准备 如果是集群部署还需要配置时间同步 关闭防火墙 systemctl disable firewalld关闭selinux setenforce 0sed -i s/SELI…

深入浅出 -- 系统架构之微服务架构选型参考图

技术选型架构图 是一个用于展示项目中所采用的各种技术和组件之间关系的图表。 它通常包括以下几个部分: 1. 项目名称和描述:简要介绍项目的背景和目标。 2. 技术栈:列出项目中使用的主要技术和工具,如编程语言、框架、数据库…

RabbitMQ Docker 安装与应用

1.官方镜像 该镜像包含用户操作界面 2.Docker运行,并设置开机自启动 docker run -d --restartalways --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management 默认登录账户和密码 guest 3、使用 队列和交换机绑定

理解PostgreSQL中的postmaster.pid

在PG中,一个简要的体系结构图可以大致画成下边的样子: Server端基本上分成backend process和若干background process。这些process都是一个名为postmaster进程的子进程。而postmaster则是postgres进程的别名。 进程概况 [14:42:08-postgrescentos1:/pg…

Ubuntu22.04平台编译完美解决问题“error: GLSL 4.5 is not supported.”【GLSL(OpenGL着色器语言)】

GLSL介绍 GLSL(OpenGL着色器语言)是用于编写OpenGL着色器程序的语言。GLSL 4.5 是 GLSL 的一个版本,引入了许多新的特性和改进,旨在提高着色器编程的灵活性和性能。GLSL 4.5 工具通常是用于编写、调试和优化 GLSL 4.5 着色器代码…

SinoDB数据库导入导出工具unload/load

unload/load是最常使用的最简单的数据导入、导出工具,支持的数据格式为以固定分隔符(如“|”为默认的分隔符)分隔的文本文件。 1. unload 数据导出 使用方法如下: unload to filename’ [DELIMITER ‘delimiter’] SELECT Statement; 其中: filename可…

Octopus V2:设备端super agent的高级语言模型

论文:Octopus v2: On-device language model for super agent论文地址:https://arxiv.org/abs/2404.01744模型主页:https://huggingface.co/NexaAIDev/Octopus-v2 Octopus-V2-2B Octopus-V2-2B 是一款具有20亿参数的开源先进语言模型&#…

【论文速读】| 大语言模型平台安全:将系统评估框架应用于OpenAI的ChatGPT插件

本次分享论文为:LLM Platform Security: Applying a Systematic Evaluation Framework to OpenAI’s ChatGPT Plugins 基本信息 原文作者:Umar Iqbal, Tadayoshi Kohno, Franziska Roesner 作者单位:华盛顿大学圣路易斯分校,华盛…

数据备份的演变:数字时代的一个关键方面

微信关注获取更多内容 数据备份至关重要,涵盖了其过去、现在和未来,是数字时代任何企业运营的一个重要方面。 如今,公司运营的几乎每个方面,从客户信息到内部财务数据,都以数字方式存储。 有鉴于此,数据…

【IoTDB 线上小课 01】我们聊聊“金三银四”下的开源

关于 IoTDB,关于物联网,关于时序数据库,关于开源...你是否仍有很多疑问? 除了自己钻研文档,群里与各位“大佬”的沟通,你是否还希望能够有个学习“捷径”? 天谋科技发起社区小伙伴,正…

Linux - mac 装 mutipass 获取 ubuntu

mutipass :https://multipass.run/docs/mac-tutorial mutipass list mutipass launch --name myname mutipass shell myname 获取 root权限: sudo su

docker一键部署GPU版ChatGLM3

一键运行 docker run --gpus all -itd --name chatglm3 -p 81:80 -p 6006:6006 -p 8888:8888 -p 7860:7860 -p 8501:8501 -p 8000:8000 --shm-size32gb registry.cn-hangzhou.aliyuncs.com/cwp-docker/chatglm3-gpu:1.0 进入容器 docker exec -it chatglm3 /bin/bash cd /…

Golang单元测试和压力测试

一.单元测试 1.1 go test工具 go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程类似,并不需要学习新的语法,规则和工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的…

云原生安全当前的挑战与解决办法

云原生安全作为一种新兴的安全理念,不仅解决云计算普及带来的安全问题,更强调以原生的思维构建云上安全建设、部署与应用,推动安全与云计算深度融合。所以现在云原生安全在云安全领域越来受到重视,云安全厂商在这块的投入也是越来…

《神经网络入门》神经网络的思想 (一)

文章目录 生物神经元的结构如何用数学建模神经元的工作模式神经网络的结构 我们知道神经网络是一个模拟人脑的数学建模,首先我们来了解一下生物神经元是怎么工作的。 人的大脑是由非常多神经元相互连接形成的网络构成的。一个神经元,可以从其他神经元接…

AugmentedReality之路-平面检测(5)

本文介绍通过AR检测水平平面和垂直平面,并将检测到的平面转化为Mesh 1、在首页添加功能入口 在首页添加一个按钮,命名为Start World Track 2、自定义ExecStartAREvent 创建ARSessionConfig并取名为ARSessionConfig_World 自定义ExecStartAREvent&…

详解TCP/IP五层模型

目录 一、什么是TCP五层模型? 二、TCP五层模型的详细内容 1. 应用层 2. 传输层 3. 网络层 4. 数据链路层 5. 物理层 三、网络设备所在分层 封装和分⽤ 三、Java示例 引言: 在网络通信中,TCP/IP协议是至关重要的。为了更好地理解TCP协议的工…

最新高自定义化的AI翻译(沉浸式翻译),可翻译网页和PDF等文件或者文献(附翻译API总结,Deeplx的api,Deepl的api)

前序 常见问题: 1.有时候想翻译网页,又翻译文献怎么办?下两个软件? 2.什么软件可以翻译视频字幕? 3.什么软件可以翻译PDF文件? 沉浸式翻译介绍 可以翻译文献可以翻译视频字幕可以翻译PDF文件支持OpenAI翻译…

顺序表——功能实现

✨✨欢迎👍👍点赞☕️☕️收藏✍✍评论 个人主页:秋邱博客 所属栏目:C语言 (感谢您的光临,您的光临蓬荜生辉) 目录 1.0 前言 2.0 线性表 2.1 顺序表 2.2 顺序表的分类 2.3 顺序表功能的实现…

基于SSM的宠物管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/89076676?spm=1001.2014.3001.5503 技术:SSM(Spring+SpringMVC+MyBatis)+LayUI+Echarts技术栈,分页采用pagehelper插件,EasyExcel进行Excel文件的导入导出。 宠物管理系统 1 CHINER-宠物管理系…