向Cosmos DB添加新属性

时间:2018-05-10 19:41:04

标签: azure azure-cosmosdb

我确实在找到这个问题的答案时遇到了很多麻烦。

如果我在集合中创建一个新文档,我可以给它任何我想要的属性。

有没有办法在我的所有文件中添加新属性? Cosmos DB似乎抵制了我所尝试的一切。我是否必须删除现有文件并制作新文件?

如果可能的话,知道如何在C#代码中执行此操作会很高兴。不过,Javascript也很好。

2 个答案:

答案 0 :(得分:0)

CosmosDB不支持部分文档更新,因此如果您确实需要新属性,则必须使用新属性更新所有现有文档。有很多方法可以做到这一点,包括存储过程。

如果您可以使用C#,那么您可以使用Cosmonaut

轻松完成
var items = await cosmoStore.Query().ToListAsync();
foreach(var item in items){
   item.YourProperty = "YourValue";
}
await cosmosStore.UpdateRangeAsync(items);

选择项目时,如果项目不存在,您的值将默认为默认属性值,并且通过更新它将被添加。

答案 1 :(得分:0)

使用https://docs.microsoft.com/fr-fr/python/api/azure-cosmos/azure.cosmos.cosmos_client.cosmosclient?view=azure-python#upsertitem-database-or-container-link--document--options-none-非常简单。

SELECT
    Name,
    Team,
    Score,
    SUM(Score) OVER (PARTITION BY Team) AS TeamScore
FROM yourTable
ORDER BY
    TeamScore DESC,
    Score;