「Python系列」Python MongoDB

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: MongoDB 是一个开源的 NoSQL 数据库,它使用 BSON(Binary JSON)格式存储数据,并提供了高性能、可扩展和灵活的数据存储解决方案。Python 中有一个名为 PyMongo 的驱动程序,允许 Python 应用程序与 MongoDB 数据库进行交互。

一、MongoDB安装

MongoDB 是一个开源的 NoSQL 数据库,它使用 BSON(Binary JSON)格式存储数据,并提供了高性能、可扩展和灵活的数据存储解决方案。Python 中有一个名为 PyMongo 的驱动程序,允许 Python 应用程序与 MongoDB 数据库进行交互。

要使用 Python 连接 MongoDB 数据库,你需要先安装 PyMongo。你可以使用 pip(Python 的包管理器)来安装它:

pip install pymongo

一旦你安装了 PyMongo,就可以开始使用它来连接 MongoDB 数据库,执行查询,插入数据,更新数据和删除数据等操作。

下面是一个简单的示例,展示了如何使用 PyMongo 连接到 MongoDB 数据库,并执行一些基本操作:

from pymongo import MongoClient

# 连接到 MongoDB 数据库
client = MongoClient('mongodb://localhost:27017/')

# 选择或创建一个数据库
db = client['mydatabase']

# 选择或创建一个集合(类似于 SQL 中的表)
collection = db['mycollection']

# 插入一个文档(类似于 SQL 中的行)
document = {
    'name': 'Alice',
    'age': 30,
    'email': 'alice@example.com'
}
result = collection.insert_one(document)
print(f"Inserted document with ID: {result.inserted_id}")

# 查询文档
documents = collection.find({})
for doc in documents:
    print(doc)

# 更新文档
result = collection.update_one({'name': 'Alice'}, {'$set': {'age': 31}})
print(f"Matched {result.matched_count} document and updated {result.modified_count} document.")

# 删除文档
result = collection.delete_one({'name': 'Alice'})
print(f"Deleted {result.deleted_count} document.")

# 关闭连接
client.close()

在这个示例中,我们首先导入了 MongoClient 类,然后使用它连接到 MongoDB 服务器。我们选择了(或创建了)一个名为 mydatabase 的数据库,并选择了(或创建了)一个名为 mycollection 的集合。

我们插入了一个文档,执行了一个查询来检索所有文档,更新了一个文档的年龄,然后删除了该文档。最后,我们关闭了与 MongoDB 的连接。

请注意,你需要将 'mongodb://localhost:27017/' 替换为你的 MongoDB 服务器的实际连接字符串。如果你的 MongoDB 服务器需要身份验证,你还需要在连接字符串中包含用户名和密码。

二、MongoDB操作数据

在Python中使用PyMongo操作MongoDB数据库涉及多个方面,包括连接到数据库、选择数据库和集合、插入文档、查询文档、更新文档、删除文档等。下面是一个简单的案例代码,展示了如何使用PyMongo进行这些操作。

首先,确保你已经安装了PyMongo库。如果没有安装,可以通过pip进行安装:

pip install pymongo

接下来是一个简单的Python脚本,展示了如何使用PyMongo进行基本的数据库操作:

from pymongo import MongoClient

# 连接到MongoDB服务器
client = MongoClient('mongodb://localhost:27017/')

# 选择或创建一个数据库
db = client['test_database']

# 选择或创建一个集合(类似于SQL中的表)
collection = db['users']

# 插入文档
user1 = {
    'name': 'Alice',
    'age': 28,
    'email': 'alice@example.com'
}
result = collection.insert_one(user1)
print(f"Inserted document with ID: {result.inserted_id}")

# 插入多个文档
users = [
    {'name': 'Bob', 'age': 25, 'email': 'bob@example.com'},
    {'name': 'Charlie', 'age': 30, 'email': 'charlie@example.com'}
]
result = collection.insert_many(users)
print(f"Inserted {result.inserted_count} documents.")

# 查询文档
# 查询所有文档
for user in collection.find():
    print(user)

# 查询特定条件的文档(例如,年龄为28的用户)
for user in collection.find({'age': 28}):
    print(user)

# 更新文档
result = collection.update_one({'name': 'Alice'}, {'$set': {'age': 29}})
print(f"Matched {result.matched_count} document and updated {result.modified_count} document.")

# 删除文档
result = collection.delete_one({'name': 'Bob'})
print(f"Deleted {result.deleted_count} document.")

# 删除所有文档
result = collection.delete_many({})
print(f"Deleted {result.deleted_count} documents.")

# 关闭连接
client.close()

这个脚本执行了以下操作:

  1. 连接到本地的MongoDB服务器。
  2. 选择或创建了一个名为test_database的数据库。
  3. 选择或创建了一个名为users的集合。
  4. 插入了一个文档到users集合中。
  5. 插入了多个文档到users集合中。
  6. 查询了所有文档和满足特定条件的文档。
  7. 更新了一个文档的年龄字段。
  8. 删除了一个名为'Bob'的用户文档。
  9. 删除了所有文档。
  10. 关闭了与MongoDB的连接。

请注意,MongoDB的查询和更新操作非常灵活,你可以使用各种操作符和条件来执行复杂的查询和更新。此外,还可以使用聚合管道来执行更复杂的数据分析操作。

确保在运行此脚本之前,你的MongoDB服务器正在运行,并且Python脚本能够访问它。如果MongoDB服务器需要身份验证,你需要在连接字符串中包含用户名和密码,例如'mongodb://username:password@localhost:27017/'

三、MongoDB简介

MongoDB是一个开源的NoSQL数据库,使用BSON(Binary JSON)格式存储数据。MongoDB的设计模式对数据的约束条件较少,同时文档对应于许多编程语言中的原生数据类型,因此它特别适合用于存储和处理不同结构的数据。以下是MongoDB的主要特点和优缺点:

主要特点

  1. 灵活的数据模型:MongoDB采用BSON(Binary JSON)格式存储数据,这种格式类似于JSON,但具有更丰富的数据类型。这种设计使得MongoDB可以轻松地存储和处理不同结构的数据,而无需事先定义固定的模式。
  2. 可扩展性:MongoDB支持水平扩展,通过增加服务器数量可以对数据库进行扩容。此外,MongoDB的内置分片和负载均衡功能可以在集群中自动将数据划分为多个分片,并将查询请求均匀地分发到各个分片上,从而实现数据的可扩展性和高性能。
  3. 高性能:MongoDB在高性能场景下表现优秀。在WiredTiger存储引擎下,数据写入内存即完成,持久化到硬盘的操作在后台异步完成。同时,副本集的读写分离和分片模式的多写可以更大程度地提高吞吐量。
  4. 高可用:MongoDB的副本集模式会将数据同步在一到多个副本服务器,并支持故障自动转移。这种设计提供了数据的冗余备份,提高了数据的可用性和安全性。
  5. 强大的查询功能:MongoDB支持丰富的查询语法和灵活的条件查询,包括范围查询、正则表达式、地理空间查询等。这使得开发人员可以轻松地构建复杂的查询来满足各种需求。

优点

  1. 高度可扩展性:MongoDB的横向扩展架构使得它可以轻松地通过添加更多的节点来扩展数据库的容量和吞吐量。这使得MongoDB非常适合处理大规模数据和高并发访问的场景。
  2. 灵活的数据模型:MongoDB的文档结构使得它可以轻松地存储和处理不同结构的数据,而无需事先定义固定的模式。这种灵活性使得MongoDB在应对复杂数据结构时具有很大的优势。
  3. 高性能:MongoDB的高性能特性使得它在处理大量数据和复杂查询时表现出色。其优化的读写操作和内置的分片功能使得它能够满足高并发、低延迟的需求。
  4. 高可用:MongoDB的副本集模式提供了数据的冗余备份和故障自动转移功能,保证了数据的安全性和可用性。这使得MongoDB在需要高可靠性的场景下具有很高的吸引力。
  5. 强大的查询功能:MongoDB支持丰富的查询语法和灵活的条件查询,使得开发人员可以轻松地构建满足各种需求的复杂查询。

缺点

  1. 不支持事务操作:MongoDB不支持事务操作,这对于需要严格事务保证的系统(如银行系统)来说可能是一个限制。
  2. 学习曲线较陡峭:由于MongoDB的特性和用法与其他关系型数据库有很大的不同,因此可能需要一定的学习和适应时间。
  3. 存储效率较低:相比于某些关系型数据库,MongoDB的存储效率可能较低。这主要是因为其灵活的数据模型和文档结构可能导致更多的空间浪费。

四、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
  8. 「Python系列」Python数据结构
  9. 「Python系列」Python元组
  10. 「Python系列」Python集合
  11. 「Python系列」Python列表
  12. [PyMongo 官方文档]
  13. MongoDB 官方文档
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
NoSQL MongoDB Python
【Python】已完美解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart
【Python】已完美解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart
259 1
|
2月前
|
NoSQL MongoDB 数据库
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
这篇文章提供了使用Python操作MongoDB数据库进行CRUD(创建、读取、更新、删除)操作的详细代码示例,以及如何执行聚合查询的案例。
32 6
|
2月前
|
NoSQL JavaScript Java
Java Python访问MongoDB
Java Python访问MongoDB
22 4
|
3月前
|
NoSQL 安全 MongoDB
用python安装mongodb
用python安装mongodb
28 0
|
4月前
|
NoSQL Shell MongoDB
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
413 0
|
5月前
|
NoSQL Shell MongoDB
python操作MongoDB部分
python操作MongoDB部分
37 0
|
5月前
|
存储 NoSQL MongoDB
深入解析 MongoDB 与 Python:基本语法、实用示例与最佳实践
深入解析 MongoDB 与 Python:基本语法、实用示例与最佳实践
|
NoSQL API MongoDB
Python使用PyMongo4.x操作MongoDB总结
PyMongo是一个Python编程语言中用于连接和操作MongoDB数据库的库。它提供了丰富的功能和API,使开发者能够在Python中轻松地进行MongoDB的数据交互和管理。
136 2
|
存储 JSON NoSQL
Python 操作mongodb库
MongoDB 是一个基于分布式文件存储的数据库。
229 0
Python 操作mongodb库
|
存储 NoSQL MongoDB
用Python操作MongoDB,看这一篇就够了
用Python操作MongoDB,看这一篇就够了
426 0
用Python操作MongoDB,看这一篇就够了