如何在Azure函数中插入/更新CosmosDB中的数据 [英] How can I insert/update data in CosmosDB in an Azure function

查看:20
本文介绍了如何在Azure函数中插入/更新CosmosDB中的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个文件中的数据,该文件表示汽车经销商当前(按照某些标准)的(巨大)汽车库存,并且每天都会生成一个反映每辆汽车的库存和价格等的新文件。

解析文件会产生Car对象列表。 每辆车的唯一性在Car对象中由某个值表示,这将是常规RDBMS设置中唯一键的基础。

我希望CosmosDB中的数据是文件中数据的可查询版本。它应该只保存最新分析的文件中的数据,而不是以前文件中的数据。

我有一个Azure函数,该函数在文件上载到BLOB存储时对其进行解析,并将解析后的数据插入CosmosDB。但是,此插入只会随着时间的推移使用毫无价值的数据增加数据库。


  • 如何才能UPSERT分析的Car对象而不是始终插入它们?

  • upsert是否可以声明为部分Azure函数,而不是ICollector<Car>

我猜CosmosDB可以用作Azure函数的输入,将那里的Car对象与文件中的对象进行比较,并在必要时更新/插入,但我更希望CosmosDB或Azure函数有一种巧妙的方式来实现这一点。


Azure函数

[FunctionName("ParseCarsFromFile")]
public static void Run(
  [BlobTrigger("data", Connection = "StorageConnection")] TextReader textReader,
  [CosmosDB("data", "car", ConnectionStringSetting ="CosmosDb", CreateIfNotExists = true)] ICollector<Car> documentOutputBinding)
{
  var cars = CarsFileParser.Parse(textReader);

  foreach (var car in cars)
  {
      documentOutputBinding.Add(car);
  }
}

推荐答案

若要向上插入文档,请将Car类更改为其中包含id属性,并将其设置为唯一的汽车标识符。

ICollector<Car>在这种情况下应该可以。

这篇关于如何在Azure函数中插入/更新CosmosDB中的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆