Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mongodb4.0中是否有任何方法可以在不使用副本集的情况下执行ACID事务_Mongodb - Fatal编程技术网

在Mongodb4.0中是否有任何方法可以在不使用副本集的情况下执行ACID事务

在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:

我们正试图在MongoDB 4.0中实现ACID事务功能,以满足独立MongoDB服务器的应用程序需求,但我们在MongoShell中面临以下代码片段的问题

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()。它们只是单个主节点而已。