当使用Python和 pymongo连接MongoDB时,可以执行各种操作来增加、修改、删除和查询文档。以下是常用操作:
-
增加数据:
add_one(table, data)
: 插入单个文档到指定的集合中,并返回插入的文档的ID。add_many(table, data_list)
: 插入多个文档到指定的集合中,并返回插入的文档的ID列表。
def add_one(table, data):db = get_db("python")result = db[table].insert_one(data)return resultdef add_many(table, data_list):db = get_db("python")result = db[table].insert_many(data_list)return result.inserted_ids
-
更新数据:
upd(table, condition, data)
: 更新满足条件的多个文档,将其字段值更新为指定的数据。
def upd(table, condition, data):db = get_db("python")result = db[table].update_many(condition, {"$set": data})return result
-
删除数据:
delete(table, condition)
: 删除满足条件的多个文档,并返回删除的文档数量。
def delete(table, condition):db = get_db("python")result = db[table].delete_many(condition)return result
-
查询数据:
find_one(table, condition)
: 查询满足条件的第一个文档,并返回该文档。find_all(table)
: 查询指定集合中的所有文档,并返回文档列表。
def find_one(table, condition):db = get_db("python")result = db[table].find_one(condition)return result def find_all(table):db = get_db("python")result = db[table].find()return list(result)
完整代码:
import pymongo
from pymongo import MongoClient# 创建返回链接对象
def get_db(database):client = MongoClient(host="localhost", port=27017)db = client[database]return db# 增删改查
# 增加数据
def add_one(table, data):db = get_db("python")result = db[table].insert_one(data)return resultdef add_many(table, data_list):db = get_db("python")result = db[table].insert_many(data_list)return result.inserted_idsdef upd(table, condition, data):db = get_db("python")result = db[table].update_many(condition, {"$set": data})return resultdef delete(table, condition):db = get_db("python")result = db[table].delete_many(condition)return resultdef find_one(table, condition):db = get_db("python")result = db[table].find_one(condition)return result
def find_all(table):db = get_db("python")result = db[table].find()return list(result)if __name__ == '__main__':data1 = {"name": "Alice", "age": 25, "city": "New York"}r.inserted_id = add_one("students", data1)print(r.inserted_id)# 插入多个文档data2 = [{"name": "Bob", "age": 30, "city": "London"},{"name": "Charlie", "age": 35, "city": "Paris"},]rr = add_many("students", data2)# 更新文档update_condition = {"name": "Alice"}update_data = {"age": 26}upd("students", update_condition, update_data)# 删除文档delete_condition = {"name": "Bob"}result = delete("students", delete_condition)print(result.deleted_count)# 查询文档condition = {"city": "New York"}result = find_one("students", condition)print(result)# 查询所有文档result = find_all("students")for doc in result:print(doc)