【问题标题】:Azure Data Factory - delete data from a MongoDb (Atlas) CollectionAzure 数据工厂 - 从 MongoDb (Atlas) 集合中删除数据
【发布时间】:2021-07-06 17:36:27
【问题描述】:

我正在尝试使用 Azure 数据工厂 (V2) 将数据复制到 Atlas 上的 MongoDb 数据库,使用 MongoDB Atlas connector,但我遇到了问题。

我想做一个 Upsert,但我要复制的数据没有主键,正如文档所说:

注意:数据工厂会自动为文档生成一个 _id,如果 _id 既不是在原始文档中指定的,也不是通过列映射指定的。这意味着您必须确保,要使 upsert 作为 预计,您的文档有一个 ID。

这意味着第一次加载工作正常,但随后的加载只是插入更多数据而不是替换当前记录。

我也找不到任何数据工厂原生的东西,可以让我在运行复制步骤之前对目标集合进行删除。

我的后备方案是创建一个小函数来删除目标集合中的数据,然后再插入新的,如下所示。完全擦拭和更换。但在此之前,我想知道是否有人曾经尝试过类似的东西,并且可以在数据工厂中提出一些我错过的东西来满足我的需求。

【问题讨论】:

    标签: azure-data-factory-2 mongodb-atlas


    【解决方案1】:

    根据document,您不能一次从 MongoDB Atlas 中删除多个文档。作为替代方案,您可以使用嵌入式 MongoDB Shell 中的db.collection.deleteMany() 方法在一次操作中删除多个文档。

    建议使用 Mongo Shell 通过查询删除。要从集合中删除所有文档,请将空过滤器文档 {} 传递给 db.collection.deleteMany() 方法。

    例如:db.movies.deleteMany({})

    【讨论】:

    • 感谢@UtkarshPal-MT,但这里的主要问题是 Azure 数据工厂连接器似乎不允许运行任何命令,甚至无法删除我通常会做的集合如果我想删除所有数据。
    • 在 ADF 中我们没有特定的活动,但您可以编写自己的 powershell 脚本并使用自定义活动执行它。
    猜你喜欢
    • 2021-09-12
    • 2019-09-15
    • 2020-03-11
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    相关资源
    最近更新 更多