10 Python进阶:MongoDB

news2024/10/7 8:20:38

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.coloradmin.cn/o/1573934.html

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

相关文章

【计算机毕业设计】宠物销售系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

论文阅读——Sat2Vid

Sat2Vid: Street-view Panoramic Video Synthesis from a Single Satellite Image 提出了一种新颖的方法,用于从单个卫星图像和摄像机轨迹合成时间和几何一致的街景全景视频。 即根据单个卫星图像和给定的观看位置尽可能真实地、尽可能一致地合成街景全景视频序列。…

全面解析十七种数据分析方法,具象数据分析思维

本文干货信息汇总:FineBI自助式BI数据分析工具下载>>https://s.fanruan.com/vfp40FineBI数据分析模板库>>https://s.fanruan.com/fnbjg 一、介绍 在当今数据驱动的商业环境中,数据分析已经成为了企业获取竞争优势的关键工具。无论是为了优化…

ACT逻辑解析

ACT逻辑解析 ACT内核1. 整体过程:1.1 Action Chunking and Temporal Ensemble1.2 Modeling human data(人工示教数据建模)1.3 Implemention ACT1.4 ACT内核 现有模仿学习缺点:在细颗粒度的任务中需要有高频的控制和闭环反馈 1. 整体过程: …

Mysql5.7 yum 简单/快速安装

Centos7下MySql安装及配置过程,简单直装版 目录 操作步骤 一、检查linux是否已安装MySql二、清除MySQL(适用重新安装) 1、删除MySQL及其依赖包2、查询遗留的目录3、删除遗留的目录三、开始安装MySQL 1、下载并添加库2、安装MySQL包3、设置My…

PID控制有物理含义吗

PID控制有物理含义吗 一、背景 对于PID的初学者,经常会有疑惑,为什么位置的误差通过PID就变成了期望速度?他们之间有什么物理关系吗?还有对于无人机,为什么期望升力,又是期望加速度,又是期望油…

绝地求生:愉人不愚人!分享你的PUBG摸“愚”穿搭,赢精美套装好礼

活动简介 愚人节来啦!为了和大家一起分享诙谐幽默的搞怪氛围,特此推出搞怪穿搭大会!快来戴上你最喜爱的头套或面具一起来参加吧!只要参与 #摸“愚”穿搭# 话题投稿,即有机会赢取魔力甜心萨莉套装1的奖励,也…

Composer Windows 安装

Composer 的下载地址为:Composer 1 运行安装程序 当启动安装程序后单击下一步继续。 选择 PHP 路径 如果你的计算机上没有安装 PHP 的话,Composer 的安装无法继续。 你需要选择你本地安装的 PHP 路径。 配置代理地址 默认的情况下,可以不…

外汇110:外汇交易不同货币类别及交易注意事项!

外汇市场是一个庞大而复杂的市场,其中有各种各样的货币品种。对于外汇投资者来说,了解外汇品种的特性和走势是比较重要的。1. 货币种类 外汇市场中的货币品种可以分为主要货币、次要货币和外围货币。 主要货币:主要指美元、欧元、英镑、日元、…

美国CPC认证是什么?为什么必须办理CPC认证呢?

美国CPC认证,全称为Childrens Product Certificate,是儿童产品认证的意思。它主要针对的是在美国市场销售的儿童产品,如玩具、家具、童车、餐椅、床上用品等。CPC认证要求产品安全性高,符合美国加州65、16 CFR等法规要求&#xff…

window安装maven和hadoop3.1.4

前面的文章已讲解如何安装idea和进行基本设置,本文主要带着大家安装配置好maven和hadoop. 大家不用去官网下载,直接使用我发给大家的压缩文件,注意解压后的文件夹不要放在中文目录下,课堂上我们讲解过原因。 这是我电脑上的路径&a…

vue3基础入门项目实战实例介绍

Vue 3 带来了许多新特性和性能优化,使得构建高效且可维护的前端应用变得更加容易。下面是一个简单的 Vue 3 基础项目实战实例介绍,帮助你入门: 项目概述 这个实战项目是一个简单的待办事项管理应用,用户可以添加、编辑和删除待办…

商业地产数字化是什么?又有哪些优势呢?

​一、什么是商业地产数字化 数字化是信息化的延伸与拓展。在企业完成信息化之后,对存储的信息的解析与挖掘,建立数据洞察,从而改变企业决策,打造全新的企业运作方式,实现数据化转型。 商业地产数字化是指将商业地产…

前端三剑客 —— JavaScript (第三节)

目录 内容回顾: 1.数据类型 2.常见运算符 数据类型转换 自动类型转换 强制类型转换 流程控制语句 顺序流程 选择流程 单分支 多分支 switch 循环流程 for循环 while循环 do...while循环 如何选择 continue和break 循环案例 内容回顾: …

Dapr(三) Dapr核心组件的使用一

结合前两期 Dapr(一) 基于云原生了解Dapr(Dapr(一) 基于云原生了解Dapr-CSDN博客) Dapr(二) 分布式应用运行时搭建及服务调用(Dapr(二) 分布式应用运行时搭建及服务调用-CSDN博客) 下篇推出dapr服务注册与发现,dapr组件绑定,dapr Actor功能。 目录 1.…

Java中的常用类详解(Math、Scanner、Random、String)

目录 一、Math(数学类) 自带常量 取整方法 三角函数方法 指数函数方法 其他方法 二、Scanner(实用程序类) 三、Random(随机数类) 四、String(字符串类) 获取相关 判断相关…

实践笔记-03 docker buildx 使用

docker buildx 使用 1.启用docker buildx2.启用 binfmt_misc3.从默认的构建器切换到多平台构建器3.1创建buildkitd.toml文件(私有仓库是http没有证书的情况下,需要配置)3.2创建构建器并使用新创建的构建器 4.构建多架构镜像并推送至harbor仓库…

清风DJ,DJ舞曲听不停

hi,大家好我是技术苟,每周准时上线为你带来实用黑科技!由于公众号改版,现在的公众号消息已经不再按照时间顺序排送了。因此小伙伴们就很容易错过精彩内容。喜欢黑科技的小伙伴,可以将黑科技百科公众号设为标星&#xf…

如何选择适合智能型程控直流电子负载

在选择适合智能型程控直流电子负载时,需要考虑以下几个方面: 根据实际需求选择合适的负载容量,负载容量是指电子负载能够承受的最大电流和电压。一般来说,负载容量越大,价格越高。因此,在满足实际需求的前提…

Qt实现Kermit协议(四)

3 实现 3.3 KermitRecvFile 该模块实现了Kermit接收文件功能。 序列图如下: 3.3.1 KermitRecvFile定义 class QSerialPort; class KermitRecvFile : public QObject, public Kermit {Q_OBJECT public:explicit KermitRecvFile(QSerialPort *serial, QObject *…