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.mzph.cn/news/798870.shtml

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

相关文章

路由器对数据包的处理过程分析笔记

虽然TCP-IP协议中传输数据会在各个路由器再次经过物理层、链路层、网络层的解封装、加工、封装、转发,但是对于两个主机间的运输层,在逻辑上,应用进程是直接通信的。 路由器主要工作在网络层,但它也涉及到物理层和链路层的一些功能…

Android详细介绍POI进行Word操作(小白可进)

poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。 一、使用poi前准备 1.导入依赖: 亲手测过下面Android导入POI依赖的方法可用 放入这个 …

计算机视觉——基于深度学习检测监控视频发生异常事件的算法实现

1. 简介 视频异常检测(VAD)是一门旨在自动化监控视频分析的技术,其核心目标是利用计算机视觉系统来监测监控摄像头的画面,并自动检测其中的异常或非常规活动。随着监控摄像头在各种场合的广泛应用,人工监视已经变得不…

三防笔记本丨工业笔记本电脑丨助力测绘行业的数字化转型

测绘行业测绘行业一直是高度技术化的领域,其重要性在于为建设、规划和资源管理提供准确的地理数据。然而,随着技术的发展,传统的测绘方法已经难以满足对数据精度和实时性的要求。因此,测绘行业正逐渐向数字化转型,采用…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之四 简单视频倒放效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之四 简单视频倒放效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之四 简单视频倒放效果 一、简单介绍 二、简单视频倒放效果实现原理 三、简单视频倒放效果案例实现…

uniapp vue2 时钟 循环定时器

效果展示: 时钟 写在前面:vue2有this指向,没有箭头函数 实验操作:封装一个时钟组件 uniapp vue2 封装一个时钟组件 核心代码: this指向的错误代码,在下: start() { this.myTimer setInterval(…

我关注的测试仪表厂商之Sifos,PoE测试

#最近看看行业各个厂商的网站,看看他们都在做什么# 先从Sifos开始,一直觉得这是家很特别的公司,在PoE测试这块是个无敌的存在。之前在上一家台资测试仪表公司的时候,也有推出过类似的基于产线验证的解决方案,最后因为…

3D桌面端可视化引擎HOOPS Visualize如何实现3D应用快速开发?

HOOPS Visualize是一个开发平台,可实现高性能、跨平台3D工程应用程序的快速开发。一些主要功能包括: 高性能、以工程为中心的可视化,使用高度优化的OpenGL或DirectX驱动程序来充分利用可用的图形硬件线程安全的C和C#接口,内部利用…

零信任安全模型:构建未来数字世界的安全基石

在数字化转型的浪潮中,云原生技术已成为推动企业创新和灵活性的关键力量💡。然而,随着技术的进步和应用的广泛,网络安全威胁也日益严峻🔓,传统的网络安全模型已经难以应对复杂多变的网络环境。在这样的背景…

flutter升级3.10.6Xcode构建报错

flutter sdk 升级Xcode报错收集,错误信息如下: Error (Xcode): Cycle inside Runner; building could produce unreliable results.没问题版本信息: Xcode:15.3 flutter sdk :3.7.12 dart sdk:2.19.6 …

ThinkPHP审计(2) Thinkphp反序列化链5.1.X原理分析从0编写POC

ThinkPHP审计(2) Thinkphp反序列化链子5.1.X原理分析&从0编写POC 文章目录 ThinkPHP审计(2) Thinkphp反序列化链子5.1.X原理分析&从0编写POC动态调试环境配置Thinkphp反序列化链5.1.X原理分析一.实现任意文件删除二.实现任意命令执行真正的难点 Thinkphp反序列化链5.1.…

k8s1.28-helm安装kafka-Raft集群

参考文档 [Raft Kafka on k8s 部署实战操作 - 掘金 (juejin.cn)](https://juejin.cn/post/7349437605857411083?fromsearch-suggest)部署 Raft Kafka(Kafka 3.3.1 及以上版本引入的 KRaft 模式)在 Kubernetes (k8s) 上,可以简化 Kafka 集群…

uniapp选择退出到指定页面

方法一:返回上n层页面 onUnload(){uni.navigateBack({delta:5,//返回上5层})},方法二:关闭当前页面,跳转到应用内的某个页面。 uni.redirectTo({url: "../home/index"//页面地址}) 方法三:关闭所有页面,打…

xss基础

第一关&#xff1a; html部分标签可以解析js <script>alert (1)</script> 第二关&#xff1a; 可以看到value用双引号闭合了&#xff0c;使用上一关的payload没用&#xff0c;尝试一下闭合这个input 所以使用双引号和>闭合后再加入上一关的payload 11"…

在 macOS 上创建安装程序

在 macOS 上创建安装程序通常涉及使用 Apple 提供的 PackageMaker 工具或者创建一个 .dmg&#xff08;磁盘映像文件&#xff09;&#xff0c;其中包含应用程序和安装脚本。那么如果在安装中出现下面情况可以用我的解决方案。 一、问题背景 开发者编写了一个 Python 应用程序&a…

AURORA64B66B IP核使用

文章目录 前言一、IP核配置二、设计框图三、上板效果总结 前言 前面我们基于GT 64B66B设计了自定义PHY层&#xff0c;并且也介绍过了基于AURORA8B18B IP核的使用&#xff0c;AURORA8B18B IP核的使用可以说是与AURORA8B18B IP核完全一致&#xff0c;可参考前文&#xff1a;http…

微信小程序实现滚动标签

使用scroll-view标签可实现组件滚动标签 1、list中 list.wxml代码如下: <!--pages/list/list.wxml--> <navigation-bartitle"小程序" back"{{false}}"color"black" background"#FFF"></navigation-bar><scroll-…

顺子日期(StringBuffer)

题目 public class Main {static int[] date new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};public static boolean res(StringBuffer s) {String ss s.toString();//yyrrfor(int i0;i<2;i) {int x Integer.parseInt(s.charAt(i)"");int y Integer.par…

基于Swin Transformers的乳腺癌组织病理学图像多分类

乳腺癌的非侵入性诊断程序涉及体检和成像技术&#xff0c;如乳房X光检查、超声检查和磁共振成像。成像程序对于更全面地评估癌症区域和识别癌症亚型的敏感性较低。 CNN表现出固有的归纳偏差&#xff0c;并且对于图像中感兴趣对象的平移、旋转和位置有所不同。因此&#xff0c;…

如何插入LinK3D、CSF、BALM来直接插入各个SLAM框架中

0. 简介 LinK3D、CSF、BALM这几个都是非常方便去插入到激光SLAM框架的。这里我们会分别从多个角度来介绍如何将每个框架插入到SLAM框架中 1. LinK3D:三维LiDAR点云的线性关键点表示 LinK3D的核心思想和基于我们的LinK3D的两个LiDAR扫描的匹配结果。绿色线是有效匹配。当前关…