下面我将详细讲解“python使用pymongo操作mongo的完整步骤”的完整攻略。
一、安装MongoDB和pymongo
首先需要安装MongoDB数据库和pymongo库。
1.安装MongoDB
可以在MongoDB官网下载数据库安装包,并按照提示安装。
2.安装pymongo
在终端执行以下命令:
pip install pymongo
二、连接MongoDB
连接MongoDB数据库需要使用pymongo库的MongoClient类。
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
以上代码会连接到本地的MongoDB数据库。如果MongoDB运行在其他机器上,那么需要将localhost修改为对应的IP地址。
三、创建数据库和集合
MongoDB中的数据库是由多个集合组成。在使用之前需要先创建好对应的数据库和集合。
假设我们需要创建一个名为test的数据库,其中包含一个名为student的集合,我们可以使用以下代码:
db = client["test"]
collection = db["student"]
当然,如果在执行插入语句时集合不存在,MongoDB会自动创建集合。
四、插入数据
插入数据使用集合的insert_one()和insert_many()方法。以插入单个数据为例:
student = {"name": "张三", "age": 18}
result = collection.insert_one(student)
print(result.inserted_id)
以上代码会向student集合中插入一条数据,其内容为一个字典对象。insert_one()方法会返回一个InsertOneResult对象,可以使用inserted_id属性获取插入的数据id。
五、查询数据
查询数据使用集合的find()方法。可以使用参数筛选需要查询的数据。例如,以下代码可以查询age等于18的学生的信息:
query = {"age": 18}
result = collection.find(query)
for x in result:
print(x)
以上代码会查询出所有age等于18的学生数据,并依次输出。可以根据实际需要设置查询条件。
六、删除数据
删除数据使用集合的delete_one()和delete_many()方法。以删除单个数据为例:
query = {"name": "张三"}
result = collection.delete_one(query)
print(result.deleted_count)
以上代码会删除名称为“张三”的学生数据,并返回删除的数据数量。
七、更新数据
更新数据使用集合的update_one()和update_many()方法。以更新单个数据为例:
query = {"name": "张三"}
new_value = {"$set": {"age": 20}}
result = collection.update_one(query, new_value)
print(result.matched_count, result.modified_count)
以上代码会更新名称为“张三”的学生数据的年龄为20,并返回匹配的数据数量和修改的数据数量。
八、完整示例
下面是一个完整的示例代码,其中包含插入、查询、更新和删除数据的操作:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["test"]
collection = db["student"]
student1 = {"name": "张三", "age": 18}
student2 = {"name": "李四", "age": 20}
result = collection.insert_many([student1, student2])
print(result.inserted_ids)
query = {"name": "张三"}
result = collection.find(query)
for x in result:
print(x)
query_1 = {"age": 18}
query_2 = {"$set": {"age": 22}}
result = collection.update_many(query_1, query_2)
print(result.modified_count)
query = {"age": 20}
result = collection.delete_many(query)
print(result.deleted_count)
以上代码会插入两个学生数据,查询年龄为18的学生数据并输出,将年龄为18的学生的年龄更新为22,将年龄为20的学生数据删除。