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/