MongoDB基础入门到深入多文档事务
在MongoDB中,多文档事务是从4.0版本开始引入的。在此之前,MongoDB使用$inc
操作来处理原子计数器等操作,但这不是真正的多文档事务。
多文档事务必须在复制集或分片集群环境中的mongod实例上启用WiredTiger存储引擎来使用。
以下是一个多文档事务的示例代码:
from pymongo import MongoClient, ASCENDING
from pymongo.errors import PyMongoError
# 连接到MongoDB
client = MongoClient("mongodb://localhost:27017/")
db = client.test_database
collection = db.test_collection
# 确保MongoDB已启用事务
if db.command("listCommands")["startTransaction"]:
print("事务支持已启用")
else:
print("事务不支持")
exit()
# 开始事务
session = client.start_session()
try:
with session.start_transaction():
# 执行多个操作
collection.update_one({"x": 1}, {"$set": {"y": 1}}, session=session)
collection.update_one({"x": 2}, {"$set": {"y": 2}}, session=session)
collection.update_one({"x": 3}, {"$set": {"y": 3}}, session=session)
# 提交事务
session.commit_transaction()
except PyMongoError as e:
# 如果有任何错误,回滚事务
session.abort_transaction()
print("事务失败:", e)
finally:
# 结束会话
session.end_session()
在这个例子中,我们首先检查MongoDB实例是否支持事务。然后,我们创建一个会话并开始一个事务。在事务块内,我们执行了三个更新操作。如果所有操作都成功,我们提交事务。如果在事务执行期间发生任何错误,我们将中止事务。最后,我们结束会话。
评论已关闭