在Mongodb4.0中是否有任何方法可以在不使用副本集的情况下执行ACID事务
我们正试图在MongoDB 4.0中实现ACID事务功能,以满足独立MongoDB服务器的应用程序需求,但我们在MongoShell中面临以下代码片段的问题在Mongodb4.0中是否有任何方法可以在不使用副本集的情况下执行ACID事务,mongodb,Mongodb,我们正试图在MongoDB 4.0中实现ACID事务功能,以满足独立MongoDB服务器的应用程序需求,但我们在MongoShell中面临以下代码片段的问题 var session1 = db.getMongo().startSession(); var session1PersonColl = session1.getDatabase('test').getCollection('person'); session1.startTransaction({readConcern: {level:
var session1 = db.getMongo().startSession();
var session1PersonColl = session1.getDatabase('test').getCollection('person');
session1.startTransaction({readConcern: {level: 'snapshot'}, writeConcern: {w: 'majority'}});
session1PersonColl.insert({"_id": 3, "fname": "fname-3", "lname": "lname-3"});
错误:
写命令者({
“ok”:0,
“errmsg”:“事务号仅允许在副本集成员或mong操作系统上使用”,
“代码”:20,
“代号”:“非法操作”
注意:当mongod实例使用副本集启动时,相同的代码段工作正常
请告知我们是否有任何方法可以在没有副本集的情况下执行此操作状态:
从版本4.0开始,MongoDB提供了对副本集执行多文档事务的能力
所以我想您确实需要一个副本集来支持事务
下面是另一个:
多文档事务仅可用于副本集部署。即使在独立服务器上,您也可以使用事务,但需要将其配置为副本集(只有一个节点)
这家伙帮了我很多忙。如果您有带MongOS路由器/复制Mongod配置节点的MongoDB群集,而没有复制碎片节点->>>只需为碎片节点启用虚拟复制,而不需要第二个副本节点。然后为每个碎片节点启用rs.initiate()。它们只是单个主节点而已。