开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC中读取mongodb cdc,所有配置依赖等信息都正确,任务不报错但是读不到数据

经测试,相同连接配置和依赖的情况下,读取mongodb同一库下面不同集合,集合命名是'abc','abc_def'这种的读取没有问题。但是集合命名是以点分隔的 如:'abc.def.gh',数据无法读取,这种特殊命名集合应该如何处理才能读到数据~

展开
收起
游客ww7eav33o4jr6 2024-01-09 09:43:54 48 0
3 条回答
写回答
取消 提交回答
  • 问题已解决,需要在with语句指定collection时使用(数据库名称.集合名称)的方式强指定;假设我的库名是test,那么with语句中可以这样写:
    'database' = 'test',
    'collection' = 'test.abc.def.gh',

    2024-01-09 16:36:30
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    对于以点分隔的集合名,MongoDB 默认不支持直接读取。但是,你可以通过以下方法来处理这种情况:

    1. 使用 $regex 操作符进行正则匹配,将点分隔的集合名转换为下划线分隔的集合名。例如,将 'abc.def.gh' 转换为 'abc_def_gh'。

    2. 在查询时,使用 $regex 操作符匹配转换后的集合名。例如,查询 'abc_def_gh' 集合中的数据。

    以下是一个示例代码:

    // 假设你的数据库连接对象为 db
    const collectionName = 'abc.def.gh';
    
    // 将点分隔的集合名转换为下划线分隔的集合名
    const convertedCollectionName = collectionName.replace(/\./g, '_');
    
    // 查询转换后的集合名中的数据
    db.getCollection(convertedCollectionName).find().toArray((err, result) => {
      if (err) {
        console.error(err);
      } else {
        console.log(result);
      }
    });
    

    这样,你就可以读取到以点分隔的集合名中的数据了。

    2024-01-09 14:47:12
    赞同 展开评论 打赏
  • 在MongoDB中,点(.)在集合名称中有特殊的意义。它通常用于分隔命名空间,例如在存储用户定义的函数或存储过程时。因此,当您尝试使用包含点的集合名称(如'abc.def.gh')进行查询时,MongoDB可能会将其解释为命名空间,而不是您预期的集合名称。
    要解决这个问题,您可以使用以下方法之一:
    1.更改集合名称:

    • 考虑将包含点的集合名称更改为不包含点的名称,例如将'abc.def.gh'更改为'abc_def_gh'。

    2.使用引号:

    • 当您在查询中使用此类集合名称时,可以尝试使用引号将其括起来。例如:
      javascript`db.abc.def.gh.find({})`
      
    • 这告诉MongoDB将'abc.def.gh'视为一个单一的集合名称,而不是尝试将其解释为命名空间。

    3.检查连接字符串或驱动程序设置:

    • 确保您的连接字符串或驱动程序设置正确,并且没有其他配置阻止您访问包含点的集合。

    4.检查权限和访问控制:

    • 确保您具有读取该集合的适当权限,并且没有访问控制限制阻止了您的查询。

    5.查看文档和社区资源:

    • 检查MongoDB的官方文档,以获取有关特殊字符和命名约定在集合名称中的使用和限制的更多信息。此外,还可以查看相关的社区和论坛,以获取其他用户可能遇到的类似问题和解决方案。
    2024-01-09 10:54:33
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载