下面是利用 Python 操作 MongoDB 数据库的详细指南:
1. 安装及连接MongoDB
首先,我们需要安装 pymongo 库以及 MongoDB 数据库。安装 pymongo 库的命令如下:
pip install pymongo
安装 MongoDB 数据库的详细过程可以参考官方文档或者其他教程。
安装完毕之后,我们可以编写 Python 代码连接 MongoDB 数据库:
import pymongo
# 连接到 MongoDB
mongo_client = pymongo.MongoClient("mongodb://localhost:27017/")
# 输出所有的数据库名称
print(mongo_client.list_database_names())
2. 数据库及集合的创建与删除
创建数据库
我们可以使用 mongo_client
对象的 list_database_names()
方法来查看当前 MongoDB 服务器上的所有数据库名称。这样我们可以很容易的判断要创建的数据库是否已经存在,如果不存在,我们就可以使用 mongo_client
对象的 create_database()
方法来创建它。
if "mydatabase" in mongo_client.list_database_names():
print("mydatabase already exists!")
else:
my_database = mongo_client["mydatabase"]
print("mydatabase created!")
创建集合
与创建数据库类似,我们同样可以使用 my_database
对象的 list_collection_names()
方法来判断要创建的集合是否已经存在,如果不存在,我们就可以使用 my_database
对象的 create_collection()
方法来创建它。
if "mycollection" in my_database.list_collection_names():
print("mycollection already exists!")
else:
my_collection = my_database["mycollection"]
print("mycollection created!")
删除数据库或集合
如果我们要删除数据库或集合,可以使用 mongo_client
或者 my_database
对象的 drop_database()
或 drop_collection()
方法。请注意,这些方法会永久删除数据,所以请谨慎使用。
# 删除数据库
mongo_client.drop_database("mydatabase")
# 删除集合
my_database.drop_collection("mycollection")
3. 插入、查询、修改、删除文档
我们可以使用 my_collection
对象的 insert_one()
或 insert_many()
方法来插入文档,使用 my_collection
对象的 find()
方法来查询文档,使用 my_collection
对象的 update_one()
或 update_many()
方法来修改文档,使用 my_collection
对象的 delete_one()
或 delete_many()
方法来删除文档。
插入文档
插入一个文档非常简单,我们只需要创建一个字典对象,并将其作为参数传递给 my_collection
对象的 insert_one()
方法即可。
# 插入一个文档
my_dict = { "name": "John", "address": "Highway 37" }
my_collection.insert_one(my_dict)
# 插入多个文档
my_list = [
{ "name": "Amy", "address": "Apple st 652" },
{ "name": "Hannah", "address": "Mountain 21" },
{ "name": "Michael", "address": "Valley 345" },
{ "name": "Sandy", "address": "Ocean blvd 2" },
{ "name": "Betty", "address": "Green Grass 1" },
{ "name": "Richard", "address": "Sky st 331" },
{ "name": "Susan", "address": "One way 98" },
{ "name": "Vicky", "address": "Yellow Garden 2" },
{ "name": "Ben", "address": "Park Lane 38" },
{ "name": "William", "address": "Central st 954" },
{ "name": "Chuck", "address": "Main Road 989" },
{ "name": "Viola", "address": "Sideway 1633" }
]
my_collection.insert_many(my_list)
# 输出插入后 my_collection 中的文档数量
print(my_collection.count_documents({}))
查询文档
我们可以使用 my_collection
对象的 find()
方法来查询文档。该方法返回的是一个迭代器对象,我们需要对其进行遍历来获取文档数据。
# 查询 my_collection 中所有的文档
for x in my_collection.find():
print(x)
# 查询 my_collection 中 name 字段为 "John" 的文档
query = { "name": "John" }
documents = my_collection.find(query)
for x in documents:
print(x)
修改文档
修改文档的方法非常类似于插入文档的方法。我们可以使用 my_collection
对象的 update_one()
或 update_many()
方法来修改文档。
# 修改 my_collection 中 name 字段为 "John" 的文档
query = { "name": "John" }
new_value = { "$set": { "address": "Canyon 123" } }
my_collection.update_one(query, new_value)
# 输出修改后 my_collection 中 name 为 "John" 的文档
query = { "name": "John" }
documents = my_collection.find(query)
for x in documents:
print(x)
删除文档
删除文档同样可以使用 my_collection
对象的 delete_one()
或 delete_many()
方法。
# 删除 my_collection 中 name 字段为 "John" 的文档
query = { "name": "John" }
my_collection.delete_one(query)
# 输出删除后 my_collection 中文档数量
print(my_collection.count_documents({}))
至此,我们已经了解了如何使用 Python 操作 MongoDB 数据库的各个方面,现在让我们来看两个实际的示例。
示例1:查询 name 为 “Jake” 的文档
query = { "name": "Jake" }
documents = my_collection.find(query)
for x in documents:
print(x)
示例2:将 my_collection 集合中所有文档的 address 字段修改为 “Beijing”
query = { "address": { "$exists": True } }
new_value = { "$set": { "address": "Beijing" } }
my_collection.update_many(query, new_value)
# 输出修改后 my_collection 中的文档
for x in my_collection.find():
print(x)
希望这篇文章能对你有所帮助!