Mongo Shell是否支持事务?执行事务时无限加载求助
MongoDB Shell事务问题解决
Mongo Shell是支持事务的,但你的操作遗漏了关键步骤,导致Shell无限加载。
问题原因
启动事务后执行写入操作,但没有提交事务或回滚事务,会话会一直持有事务资源,处于等待状态,所以Shell卡住不动。
修正后的完整操作流程
use test; // 启动会话 const session = db.getMongo().startSession(); // 开启事务 session.startTransaction(); // 准备文档并执行写入(必须传入session参数) const doc = {name: "test", value: 1}; db.myCollectionName.insertOne(doc, {session}); // 关键:提交事务保存变更,或者用abortTransaction()放弃变更 session.commitTransaction(); // 结束会话释放资源 session.endSession();
额外注意事项
- 事务仅支持MongoDB副本集或分片集群部署。如果是单节点测试环境,启动mongod时需要添加
--enableTestCommands参数才能启用事务功能。 - 事务中的所有读写操作必须关联同一个session对象,你已经正确传入了session参数,这部分没问题。
- 如果已经出现无限加载,可按
Ctrl+C终止当前操作,然后手动调用session.endSession()释放会话资源。
内容的提问来源于stack exchange,提问作者Brijesh Patel
相关产品推荐
相关产品推荐

