Database 启用没有副本集或配置最少的MongoDB事务

Database 启用没有副本集或配置最少的MongoDB事务,database,mongodb,transactions,replicaset,mongodb-replica-set,Database,Mongodb,Transactions,Replicaset,Mongodb Replica Set,[一些背景信息-可能会跳过] 首先,我对数据库管理几乎一无所知 而且只是对后台的mongoose和node的肤浅体验 领域(我的几个课程)。我的课程让我相信 对于具有关系数据库的数据库来说,mongodb仍然是一个可行的选择 属性和关闭我去了一个后端工作的论坛,如 网站。在了解了事务之后,我尝试实现 他们在我的后端,因为它似乎完全有必要实现一个 执行查询数组时的回滚功能。不管怎样 我们发现,事务只能在副本集上进行,而副本集 似乎至少需要2个。启动MVP需要3个数据库 显然,这被认为是一种过激行为

[一些背景信息-可能会跳过]

首先,我对数据库管理几乎一无所知 而且只是对后台的mongoose和node的肤浅体验 领域(我的几个课程)。我的课程让我相信 对于具有关系数据库的数据库来说,mongodb仍然是一个可行的选择 属性和关闭我去了一个后端工作的论坛,如 网站。在了解了事务之后,我尝试实现 他们在我的后端,因为它似乎完全有必要实现一个 执行查询数组时的回滚功能。不管怎样 我们发现,事务只能在副本集上进行,而副本集 似乎至少需要2个。启动MVP需要3个数据库 显然,这被认为是一种过激行为

[问题]

  • 是否可以只使用一个数据库实现事务?如果是,怎么做

  • 如果上述方法不可行,那么在实现事务时,如何以最低配置启动mongodb数据库,同时考虑到数据库是用于启动MVP的

  • (对于在类似场景中实现生产级mongo数据库的任何人)如果考虑不使用事务,如何在没有事务的情况下将编辑/创建多个文档的查询安全地发送到mongoDB数据库,虽然没有在每一段代码中都使用包含查询的try-catch来回滚每一个失败点(我认为这是太多的开销)

  • 我的最后期限很紧,并且已经使用mongoose做了大量的基础工作和几条路线,这意味着放弃mongodb来建立关系数据库目前将是一个困难的选择

    我想我已经把所有与主题相关的东西都搜遍了,甚至在谷歌搜索的第二页尝试了博客/文章(其中包括我自己认为是黑暗的网站)。 然而,我确实认为我可能错过了我一直在寻找的东西,一个只包含链接的答案也是受欢迎的


    谢谢你的阅读

    您需要一个副本集[*]来使用事务,但您可以创建一个单节点副本集用于测试目的

    本文描述了完整的过程,对于单个节点RS,您可以按照编写的步骤进行操作,但只配置单个成员

    简单地说,您需要将
    --replSet
    参数传递给
    mongod
    ,然后通过
    mongo
    shell连接到它,然后运行
    rs.initiate()

    请注意,事务并不是解决所有问题的灵丹妙药。有些情况下它们是合适的,有些情况下MongoDB提供了更适合的其他功能

    [*]或MongoDB 4.2+的分片集群,但这需要更多的设置工作