使用Azure数据工厂更新Cosmos db中的现有文档

时间:2019-10-22 07:09:32

标签: azure-cosmosdb azure-storage-blobs azure-data-factory azure-cosmosdb-mongoapi

我创建了一个数据工厂,以使用存储在Blob中的数据作为csv文件更新我现有的Cosmos DB。 csv文件包含两个字段“ X”和“ Y”及其值。 我想在我现有的Cosmos Db中插入新的键作为Y,过滤条件是唯一的X列

我已经创建了管道,并在cosmosdb中添加了文档。 但是在当前的管道中,旧数据将被删除,仅Y列将被插入。

宇宙db中当前文档中的数据

  {
    "_id" : ObjectId("5dad5adbfa882146ea8e7a0e"),
    "x" : "UUID",
   "old_key" : true
  }

csv文件中的数据

   x,new_key
   UUID, "new_value"

预期产量

   {
     "_id" : ObjectId("5dad5adbfa882146ea8e7a0e"),
      "x" : "UUID",
     "old_key" : true,
    "new_key":"new_value"

    }

我尝试的输出(删除了旧键)

   {
     "_id" : ObjectId("5dad5adbfa882146ea8e7a0e"),
     "x" : "UUID"
     "new_key":"new_value"

   }

1 个答案:

答案 0 :(得分:0)

您要为cosmos数据库实施增量更新或部分更新。

{
    "_id" : ObjectId("5dad5adbfa882146ea8e7a0e"),
    "x" : "UUID",
   "old_key" : true
}

更改为:

{
     "_id" : ObjectId("5dad5adbfa882146ea8e7a0e"),
      "x" : "UUID",
     "old_key" : true,
    "new_key":"new_value"
}

据我所知,到目前为止,cosmos数据库中尚不支持部分更新。请参阅此user voice和此feature statement(我知道此功能缺乏已持续了很长时间...。)。因此,您必须包含"_id"之外的新文档中的所有属性。

我做了一个简单的测试:

1。将csv文件加载到cosmos db中:

_id,x,A
5daeb1eda34d640184a71d47,123,ValueA

2。将新的csv文件加载到cosmos db中:

_id,x,B
5daeb1eda34d640184a71d47,123,ValueBBB

3。打印两个输出:

enter image description here