Python 操作 MongoDB数据库的方法(非 ODM)

  • Post category:Python

Python是一门功能强大的编程语言,而MongoDB是一款广泛使用的非关系型数据库。在开发过程中,经常需要使用Python来操作MongoDB数据库。本文将介绍Python操作MongoDB数据库的方法(非ODM)的完整攻略,并提供两个示例说明。

安装MongoDB的Python驱动

Python可以使用pymongo来连接和操作MongoDB数据库。可以通过pip命令安装pymongo:

pip install pymongo

连接MongoDB数据库

在使用pymongo之前,我们需要先连接MongoDB数据库。

import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")

这里的mongodb://localhost:27017/是MongoDB数据库的默认地址和端口号,如果需要连接其他地址和端口号的MongoDB数据库,可以将其替换为相应的地址和端口号。

获取MongoDB数据库

在连接MongoDB数据库后,我们需要选择一个特定的数据库进行操作,可以通过下面的代码获取MongoDB数据库:

db = client["mydatabase"]

这里的mydatabase是数据库的名称,如果该数据库不存在,MongoDB会自动创建一个新的数据库。

获取MongoDB集合

在获取MongoDB数据库后,我们需要选择一个特定的集合进行操作,可以通过下面的代码获取MongoDB集合:

col = db["mycollection"]

这里的mycollection是集合的名称,如果该集合不存在,MongoDB会自动创建一个新的集合。

插入文档

可以使用insert_one()insert_many()方法向MongoDB集合中插入文档。下面是一个示例代码:

# 在mycollection集合中插入一条文档
doc = {"name": "Alice", "age": 25}
col.insert_one(doc)

# 在mycollection集合中插入多条文档
docs = [{"name": "Bob", "age": 30}, {"name": "Charlie", "age": 35}]
col.insert_many(docs)

查询文档

可以使用find()方法查询MongoDB集合中的文档。下面是一个示例代码:

# 查询mycollection集合中的所有文档
cursor = col.find()
for doc in cursor:
    print(doc)

# 查询mycollection集合中age大于等于30的文档
query = {"age": {"$gte": 30}}
cursor = col.find(query)
for doc in cursor:
    print(doc)

除了find()方法之外,还有其他查询方法可以使用,如find_one()aggregate()等,读者可以根据需要选择使用。

更新文档

可以使用update_one()update_many()方法更新MongoDB集合中的文档。下面是一个示例代码:

# 将mycollection集合中name为Bob的文档的age更新为40
query = {"name": "Bob"}
new_value = {"$set": {"age": 40}}
col.update_one(query, new_value)

删除文档

可以使用delete_one()delete_many()方法删除MongoDB集合中的文档。下面是一个示例代码:

# 删除mycollection集合中age小于30的文档
query = {"age": {"$lt": 30}}
col.delete_many(query)

示例说明

下面是一个完整的示例,演示了如何使用Python操作MongoDB数据库。

import pymongo

# 连接MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")

# 获取MongoDB数据库
db = client["mydatabase"]

# 获取MongoDB集合
col = db["mycollection"]

# 在mycollection集合中插入一条文档
doc = {"name": "Alice", "age": 25}
col.insert_one(doc)

# 在mycollection集合中插入多条文档
docs = [{"name": "Bob", "age": 30}, {"name": "Charlie", "age": 35}]
col.insert_many(docs)

# 查询mycollection集合中的所有文档
cursor = col.find()
for doc in cursor:
    print(doc)

# 查询mycollection集合中age大于等于30的文档
query = {"age": {"$gte": 30}}
cursor = col.find(query)
for doc in cursor:
    print(doc)

# 将mycollection集合中name为Bob的文档的age更新为40
query = {"name": "Bob"}
new_value = {"$set": {"age": 40}}
col.update_one(query, new_value)

# 删除mycollection集合中age小于30的文档
query = {"age": {"$lt": 30}}
col.delete_many(query)

参考资料

  • pymongo官方文档: https://pymongo.readthedocs.io/en/stable/
  • MongoDB官方文档: https://docs.mongodb.com/manual/