首页 > 解决方案 > MongoDB (Docker) 错误 20 - 尝试启动事务时出现非法操作

问题描述

我正在使用 MongoDB docker (4.4.x) 图像作为我的 NestJS 后端数据库。其中一个 API 是由我的支付网关的 webhook 触发的。由于它是与支付相关的数据库操作,因此我使用 ACID 事务。问题是,在我开始会话之后,然后进行事务并尝试查找一个文档(事务中的第一个查询),它会引发错误:

{
  "ok": 0,
  "code": 20,
  "codeName": "IllegalOperation",
  "name": "MongoError"
}

然后我切换到 MongoDB Atlas 开发服务器,整个事务完美运行。这让我相信,我安装的 mongo docker 映像有问题。

我的 docker-compose.yaml 文件:

version: '3'
services:
    database:
        image: 'mongo'
        container_name: 'mongoDbDev'
        environment:
            - MONGO_INITDB_ROOT_USERNAME=root
            - MONGO_INITDB_ROOT_PASSWORD=789512346
        volumes:
            - ./mongo-volume:/data/db
        ports:
            - '27017:27017'

mongo-volume目录位于~/Documents/Workspace/Docker/mongodb/

我尝试了这个 stackoverflow解决方案,但没有奏效。哪个 TLDR;./mongo-volume更改文件夹的权限。

附加信息,

  1. 我在没有 sudo 的情况下使用 docker-compose 命令(用 sudo 试过,没有用)
  2. 我必须使用带有 sudo 命令的 docker,安装后的步骤对我不起作用

标签: mongodbdockermongoosemongodb-query

解决方案


推荐阅读