Azure functions 如何在Azure函数中插入/更新CosmosDB中的数据

Azure functions 如何在Azure函数中插入/更新CosmosDB中的数据,azure-functions,azure-cosmosdb,Azure Functions,Azure Cosmosdb,假设我有一个文件中的数据,该文件表示汽车经销商当前的一些标准汽车的巨大独特库存,并且每天生成一个新文件,反映每辆汽车的库存和价格等 解析该文件将生成一个汽车对象列表。 每个汽车的唯一性在汽车对象中由某个值表示,该值是常规rdbms设置中唯一键的基础 我希望CosmosDB中的数据是文件中数据的可查询版本。它应该只保存最新解析文件中的数据,而不保存以前文件中的数据 我有一个Azure函数,当文件上传到blob存储时,它会解析文件,并将解析后的数据插入CosmosDB。但是,这种插入只会随着时间的推

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

解析该文件将生成一个汽车对象列表。 每个汽车的唯一性在汽车对象中由某个值表示,该值是常规rdbms设置中唯一键的基础

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

我有一个Azure函数,当文件上传到blob存储时,它会解析文件,并将解析后的数据插入CosmosDB。但是,这种插入只会随着时间的推移使数据库中的数据变得毫无价值

我如何才能插入解析的汽车对象,而不是始终插入它们

是否可以将upsert声明为azure函数的一部分而不是ICollector

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

Azure功能:


要取消插入文档,请将汽车类更改为具有id属性,并将其设置为唯一汽车标识符


ICollector在这种情况下应该可以使用。

Cosmos中的文档ID是什么?是车号还是自动生成的?是自动生成的。可以是汽车id,还是og型车?谢谢。我通过创建一个名为id lower case of type string的属性来实现它。我无法让后者工作,id仍然是我无法控制的GUID。@kasperhj当时我可能误解了示例。。。稍后我会亲自尝试,从答案中删除这个选项,直到我证明它有效。
[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);
  }
}