MongoDB(版本 2)

通过 MariaDB 连接器,您可以对 MariaDB 数据库执行插入、删除、更新和读取操作。

支持的版本

  • MongoDB 版本 5 及更高版本。
  • Mongo Atlas 部署在 Google Cloud 上。

准备工作

在使用 MongoDB 连接器之前,请先完成以下任务:

  • 在您的 Google Cloud 项目中:
    • roles/connectors.admin IAM 角色授予配置连接器的用户。
    • 将以下 IAM 角色授予您要用其来使用连接器的服务账号:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      服务账号是一种特殊类型的 Google 账号,用于表示需要验证身份并获得授权以访问 Google API 数据的非人类用户。如果您没有服务账号,则必须创建一个服务账号。如需了解详情,请参阅创建服务账号

    • 启用以下服务:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如需了解如何启用服务,请参阅启用服务

    如果之前没有为您的项目启用这些服务或权限,则在您配置连接器时,系统会提示您启用。

配置连接器

配置连接器时,您需要创建与数据源(即后端系统)的连接。一个连接需专用于一个数据源。这意味着,如果您有许多数据源,则必须为每个数据源创建单独的连接。如需创建连接,请执行以下步骤:

  1. Cloud 控制台 中,进入 Integration Connectors > 连接页面,然后选择或创建一个 Google Cloud 项目。

    转到“连接”页面

  2. 点击 + 新建以打开创建连接页面。
  3. 位置部分中,选择连接的位置。
    1. 区域:从下拉列表中选择一个位置。

      如需查看所有受支持区域的列表,请参阅位置

    2. 点击下一步
  4. 连接详情部分中,完成以下操作:
    1. 连接器:从可用连接器的下拉列表中选择 MongoDB
    2. 连接器版本:从可用版本的下拉列表中选择版本 2 2
    3. 连接名称字段中,输入连接实例的名称。

      连接名称必须符合以下条件:

      • 连接名称可以使用字母、数字或连字符。
      • 字母必须小写。
      • 连接名称必须以字母开头,以字母或数字结尾。
      • 连接名称不能超过 63 个字符。
    4. (可选)输入连接实例的说明
    5. 服务账号:选择具有所需角色的服务账号。
    6. (可选)配置连接节点设置

      • 节点数下限:输入连接节点数下限。
      • 节点数上限:输入连接节点数上限。

      节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。

    7. 数据库:MongoDB 数据库的名称。
    8. 连接超时:连接超时(以秒为单位)。
    9. 使用 SSL:指定是否启用 SSL。
    10. 应用名称:Mongo 的自定义应用名称。
    11. 最大过时秒数:在客户端停止将辅助实例用于读取操作之前,辅助实例过时的时间(以秒为单位)。
    12. Write Concern(w Option):用于请求确认写入操作已传播到具有特定标记的指定数量实例的选项。
    13. Write Concern(wtimeoutMS Option):指定写入问题的时间限制(以毫秒为单位)。
    14. Write Concern(poster Option):向 MongoDB 请求确认写入操作已写入日志。
    15. 读取偏好设置:将此项设置为从副本集读取的策略。接受的值包括 primary、primaryPreferred、secondary、secondaryPreferred 和 nearest.
    16. 集群类型:指定 MongoDB 集群的类型。
    17. 启用加密:指定是否启用加密。
    18. 加密类型:指定启用的加密类型。目前仅支持 Local Encryption 类型。
    19. 加密架构:指定加密架构信息,包括字段和加密算法、密钥替代名称、查询类型和争用因数。例如:
      {
        "database.collection": {
          "encryptMetadata": {
            "algorithm": "parentAlgo"
          },
          "properties": {
            "passportId": {},
            "medicalRecords": {
              "encryptMetadata": {
                "algorithm": "medicalRecordParentAlgo"
              },
              "properties": {
                "medicalRecord1": {},
                "medicalRecord2": {
                  "encrypt": {
                    "algorithm": "medicalRecord2Algo",
                    "keyAltName": "medicalRecord2Altkey",
                    "queryType": "equality",
                    "contentionFactor": 3
                  }
                }
              }
            },
            "insuranceProperties": {
              "properties": {
                "policyNumber": {},
                "insuranceRecord1": {
                  "encrypt": {
                    "algorithm": "insuranceRecord1Algo",
                    "keyAltName": "insuranceRecord1AltKey"
                  }
                },
                "insuranceRecord2": {
                  "encrypt": {
                    "algorithm": "insuranceRecord2Algo",
                    "keyAltName": "insuranceRecord2AltKey",
                    "contentionFactor": 5
                  }
                }
              }
            }
          }
        }
      }
    20. encryption_master_key:包含加密主密钥的 Secret Manager Secret。
    21. encryption_key_vault:加密密钥保管库值。
    22. 身份验证数据库:指定用于身份验证的 MongoDB 数据库的名称。
    23. (可选)点击 + 添加标签,以键值对的形式向连接添加标签。
    24. 点击下一步
  5. 目标部分中,输入您要连接的远程主机(后端系统)的详细信息。
    1. 目的地类型:您可以将目的地详细信息指定为主机地址,可以是以下任何一项:
      • 单个 Mongo SRV 字符串。例如 mongodb+srv://cluster2.2f.mongodb.net
      • 单个副本。例如 dasdsf.2f.mongodb01.net
      • IP 地址。例如:10.23.123.12

      如果未指定 mongodb+srv,当合并连接字符串中的所有副本后,系统会将 mongodb:// 前缀添加到最终到达网址。

      • 主机地址:指定目标的主机名或 IP 地址。

        如果您要与后端建立专用连接,请执行以下操作:

      要输入其他目标,请点击 + 添加目标

    2. 点击下一步
  6. 身份验证部分中,输入身份验证详细信息。
    1. 选择一种身份验证类型,然后输入相关详细信息。

      MongoDB 连接支持以下身份验证类型:

      • 用户名和密码
    2. 如需了解如何配置这些身份验证类型,请参阅配置身份验证

    3. 点击下一步
  7. 查看:查看您的连接和身份验证详细信息。
  8. 点击创建

配置身份验证

根据您要使用的身份验证输入详细信息。

  • 用户名和密码
    • 用户名:连接器的用户名
    • Password:包含用户密码的 Secret Manager Secret。
    • 身份验证方案:用于身份验证的方案。

      MongoDB 连接支持以下身份验证方案:

      • 纯色
      • SCRAM-SHA-1
      • SCRAM-SHA-256

实体、操作和动作

所有集成连接器都会为所连接应用的对象提供抽象层。您只能通过此抽象访问应用的对象。抽象作为实体、操作和动作向您展示。

  • 实体:实体可以被视为连接的应用或服务中的对象或属性集合。不同连接器的实体定义也会有所不同。例如,在数据库连接器中,表是实体;在文件服务器连接器中,文件夹是实体;在消息传递系统连接器中,队列是实体。

    不过,可能连接器不支持或不支持任何实体,在这种情况下,Entities 列表将为空。

  • 操作:操作是指您可以对实体执行的操作。您可以对实体执行以下任一操作:

    从可用列表中选择一个实体,系统会生成该实体可用的操作列表。如需了解操作的详细说明,请参阅连接器任务的实体操作。但是,如果连接器不支持任何实体操作,则此类不受支持的操作不会列在 Operations 列表中。

  • 动作:动作是可通过连接器接口提供给集成的头等函数。动作可让您对一个或多个实体进行更改,并且动作因连接器而异。但可能的情况是,连接器不支持任何动作,在这种情况下,Actions 列表将为空。

系统限制

MongoDB 连接器每秒最多可以为每个节点处理 70 个事务,并且会限制任何超出此限制的事务。默认情况下,Integration Connectors 会为连接分配 2 个节点(以提高可用性)。

如需了解适用于 Integration Connectors 的限制,请参阅限制

支持的数据类型

以下是此连接器支持的数据类型:

  • BIGINT
  • BINARY
  • BIT
  • BOOLEAN
  • CHAR
  • 日期
  • DECIMAL
  • DOUBLE
  • FLOAT
  • INTEGER
  • LONGN VARCHAR
  • LONG VARCHAR
  • NCHAR
  • NUMERIC
  • NVARCHAR
  • REAL
  • 室内
  • 时间
  • TIMESTAMP
  • 暗含
  • VARBINARY
  • VARCHAR

MongoDB Atlas 集群的配置

MongoDB Atlas 集群的身份验证配置与之前记录的步骤略有不同。如需对 Atlas 集群进行身份验证,您必须先获取 Atlas 连接字符串。如需获取 Atlas 连接字符串,请执行以下步骤:

  1. 在“集群”视图中,点击要连接到的集群对应的“连接”。
  2. 点击“连接您的应用”。
  3. 选择任一驱动程序选项以显示连接字符串。

如需对 Atlas 集群进行身份验证,请使用以下配置:

  • 身份验证数据库:将值设置为 admin,因为所有 MongoDB Atlas 用户都与 admin 数据库关联。
  • 使用 SSL:将值设置为 true
  • 服务器:将该值设置为 mongodb+srv://MongoDB INSTANCE SERVER NAME,但不添加用户名和密码。

操作

本部分列出了 MongoDB 连接支持的所有操作。

AggregatePipeline 操作

此操作会汇总一个集合中的流水线更改。

AggregatePipeline 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
管道 字符串 聚合流水线,包含以字符串列表形式显示的字段阶段。
page_size 整数 结果集每页中包含的项目数量。
page_no 整数 要从结果集中检索的页面的索引。索引从 0 开始。

如需查看有关如何配置 AggregatePipeline 操作的示例,请参阅示例

CountDocuments 操作

此操作会统计满足集合中给定条件的所有文档。

CountDocuments 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
过滤器 字符串 以 MongoDB 查询格式表示的过滤条件。如果为查询类型相等启用了加密架构,此条件可以包含加密字段。

CountDocuments 操作的输出参数

此操作会返回满足指定条件的所有文档的计数。

如需查看有关如何配置 CountDocuments 操作的示例,请参阅示例

DeleteDocuments 操作

此操作会删除集合中的文档。

DeleteDocuments 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
过滤器 字符串 以 MongoDB 查询格式表示的过滤条件。如果为查询类型相等启用了加密架构,此条件可以包含加密字段。

DeleteDocuments 操作的输出参数

该操作会返回已删除的文档的数量。

如需查看有关如何配置 DeleteDocuments 操作的示例,请参阅示例

DistinctValues 操作

此操作会返回集合中某个字段的不同值。

DistinctValues 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
字段 字符串 用于查询不同值的字段名称。
过滤器 字符串 以 MongoDB 查询格式表示的过滤条件。如果为查询类型相等启用了加密架构,此条件可以包含加密字段。

如需查看有关如何配置 DistinctValues 操作的示例,请参阅示例

InsertDocument 操作

此操作会在集合中插入一个文档。

下表介绍了 InsertDocument 操作的输入和输出参数。

InsertDocument 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
文档 字符串 要添加到 MongoDB 集合中的文档。

InsertDocument 操作的输出参数

此操作会返回插入的文档的 ID。

如需查看有关如何配置 InsertDocument 操作的示例,请参阅示例

ListDocuments 操作

下表介绍了 ListDocuments 操作的输入和输出参数。

ListDocuments 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
过滤器 字符串 以 MongoDB 查询格式表示的过滤条件。如果为查询类型等式启用了加密架构,此条件可以包含加密字段。
page_size 整数 结果集每页中包含的项目数量。
page_no 整数 要从结果集中检索的页面的索引。索引从 0 开始。
投影 字符串 要以 Mongo 格式包含在查询投影中的字段或属性集。
sort_by 字符串 使用 MongoDB 的二进制 JSON (BSON) 格式的查询结果排序规范。

ListDocuments 操作的输出参数

该操作会根据页面大小返回满足过滤条件的文档列表。默认页面大小为 25,页面大小上限为 50,000。

如需查看有关如何配置 ListDocuments 操作的示例,请参阅示例

UpdateDocuments 操作

下表介绍了 UpdateDocuments 操作的输入和输出参数。

UpdateDocuments 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
字符串 以 Mongo 格式更新的值。
过滤器 字符串 以 MongoDB 查询格式表示的过滤条件。如果为查询类型相等启用了加密架构,此条件可以包含加密字段。
更新/插入 布尔值 操作是否更新/插入。

UpdateDocuments 操作的输出参数

该操作会返回更新的文档数量。

如需查看有关如何配置 UpdateDocuments 操作的示例,请参阅示例

UpdateDocumentsWithEncryption 操作

此操作允许用户更新加密值。下表介绍了 UpdateDocumentsWithEncryption 操作的输入和输出参数。

UpdateDocumentsWithEncryption 操作的输入参数

参数名称 数据类型 需要 说明
集合 字符串 MongoDB 集合的名称。
文档 字符串 包含要更新的值的文档。值可以包含将使用 CSFLE 加密的字段。
过滤器 字符串 以 MongoDB 查询格式表示的过滤条件。如果为查询类型相等启用了加密架构,此条件可以包含加密字段。
更新/插入 布尔值 指定操作是否为 upsert

UpdateDocumentsWithEncryption 操作的输出参数

该操作会返回更新的文档数量。

如需查看有关如何配置 UpdateDocumentsWithEncryption 操作的示例,请参阅示例

示例

本部分介绍如何执行此连接器中的一些实体操作和操作。

示例 - 汇总流水线更改

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 AggregatePipeline 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {
      "collection": "restaurants",
      "pipeline": {
        "stages": [
          "{$addFields: { \"new_menu_item\": \"tea\"}}"
        ]
      },
      "page_size": 1,
      "page_no": 0
    }
  4. 此示例向 restaurant 集合中的所有文档添加了一个新的菜单项,并返回结果的第一页。

示例 - 统计文档数量

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 CountDocuments 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {
    "collection":"restaurants",
    "filter": "{\"name\": \"CarvelIceCream1\"}"
    }
  4. 此示例返回与过滤条件匹配的文档的数量。如果操作成功,Connectors 任务的 connectorOutputPayload 响应参数的值将如下所示:

    {
      "results": [
       {
        "count": 5
       }
      ]
    }

示例 - 删除文档

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 DeleteDocuments 操作,然后点击完成
  3. 连接器任务的任务输入部分,点击 connectorInputPayload,然后在 Default Value 字段中输入以下内容:
    {
      "collection": "Insurancedocuments",
      "filter": "{\"insurance.provider\":\"ABC\"}"}
  4. 此示例将删除保险提供商作为 ABC 的所有文档。

示例 - 在集合中查找不同的值

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 DistinctValues 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {"collection":"restaurants","field":"contact"}
    
  4. 此示例在 restaurants 集合中返回不同的值。如果操作成功,Connectors 任务的 connectorOutputPayload 响应参数的值将如下所示:

    {
     "results": [
      {
       "DistinctValues": [
        "3217902323",
        "8747479023",
        "3492619023"
       ]
      }
     ]
    }

示例 - 插入文档

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 InsertDocument 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    { {
    "collection": "Insurancedocuments",
    "document": "{\"fname\":\"firstName\",
    \"lname\":\"lastName\",
    \"passportId\":\"ABCD1234\",
    \"bloodType\":\"A\",
    \"medicalRecords\":[{\"item\":\"name1\"},{\"item\":\"name2\"}],
    \"insurance\":{\"policyNumber\":\"12345\",\"provider\":\"provider2\"}}"
    } }
  4. 此示例在 Insurancedocuments 集合中插入一个文档。文档的内容在 document 字段中指定。如果插入成功,您将在 Connectors 任务的 connectorOutputPayload 响应参数中获得所插入文档的 ID。

示例 - 列出文档

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 ListDocuments 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {
    "collection": "Insurancedocuments",
    "filter": "{\"insurance.provider\":\"ABC\"}",
    "page_size": 10
    }
  4. 此示例返回 Insurancedocuments 集合中保险提供商为 ABC 的文档。结果集的页面大小设置为 10,并且您可以在 Connectors 任务的 connectorOutputPayload 响应参数中以 JSON 格式获取文件列表。

示例 - 更新文档

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 UpdateDocuments 操作,然后点击完成
  3. 连接器任务的任务输入部分中,点击 connectorInputPayload,然后在 Default Value 字段中输入类似于以下内容的值:
    {"collection":"Insurancedocuments",
    "values":" {$set: { lname:\"Smith\" }}",
    "filter":"{\"insurance.provider\":\"ABC\"}"}
  4. 此示例将匹配过滤条件的文档中的姓氏更新为 Smith。如果更新成功,您会收到更新的文档数量。响应将显示在 Connectors 任务的 connectorOutputPayload 响应参数中。

示例 - 更新已加密的文档

  1. Configure connector task 对话框中,点击 Actions
  2. 选择 UpdateDocumentsWithEncryption 操作,然后点击完成
  3. 连接器任务的任务输入部分,点击 connectorInputPayload,然后在 Default Value 字段中输入以下内容:
    { {"collection":"Insurancedocuments",
    "document":" { \"insurance.provider\":\"XYZ\" }",
    "filter":"{\"insurance.provider\":\"ABC\"}"}
  4. 在本例中,在保险提供方为 ABC 的所有文档中,将保险提供方更新为 XYZ

使用 Terraform 创建连接

您可以使用 Terraform 资源创建新连接。

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

如需查看用于创建连接的示例 Terraform 模板,请参阅示例模板

使用 Terraform 创建此连接时,您必须在 Terraform 配置文件中设置以下变量:

参数名称 数据类型 需要 说明
数据库 STRING True MongoDB 数据库的名称。
超时 INTEGER False 连接超时(以秒为单位)。
enable_ssl BOOLEAN False 此字段用于设置是否启用 SSL。
app_name STRING False MongoDB 的自定义应用名称。
max_staleness_seconds INTEGER False 辅助实例过时的时间(以秒为单位),在客户端停止将其用于读取操作之前。
write_concern STRING False 用于请求确认写入操作已传播到具有指定标记的指定数量的实例的选项。
write_concern_timeout INTEGER False 指定写入问题的时间限制(以毫秒为单位)。
write_concern_journal BOOLEAN False 向 MongoDB 请求确认写入操作已写入日志。
read_preference ENUM False 读取此连接的偏好设置。支持的值包括:Primary、primaryPreferred、secondary、secondaryPreferred、较接近
cluster_type ENUM False 指定 MongoDB 集群的类型。支持的值包括:REPLICA_SET、STANDALONE、SHARDED、UNKNOWN
enable_encryption BOOLEAN False 此字段用于设置是否启用加密。
encryption_type ENUM False 此字段用于设置已启用的加密类型。支持的值包括:local
encryption_schema STRING False 加密架构信息,包括所使用的字段和加密算法。
encryption_master_key SECRET False 包含加密主密钥的 Secret Manager Secret。
encryption_key_vault STRING False 加密密钥保管值。
auth_database STRING True 用于进行身份验证的 MongoDB 数据库的名称。

在集成中使用 MongoDB 连接

创建连接后,它在 Apigee Integration 和 Application Integration 中均可使用。您可以通过连接器任务在集成中使用该连接。

  • 如需了解如何在 Apigee Integration 中创建和使用连接器任务,请参阅连接器任务
  • 如需了解如何在 Application Integration 中创建和使用连接器任务,请参阅连接器任务

向 Google Cloud 社区寻求帮助

您可以在 Cloud 论坛的 Google Cloud 社区发布您的问题并讨论此连接器。

后续步骤