利用Python操作MongoDB数据库的详细指南

  • Post category:Python

下面是利用 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)

希望这篇文章能对你有所帮助!