Cosmos DB alter collection

时间:2018-11-20 11:38:18

标签: javascript asp.net azure azure-cosmosdb

我对Azure来说还很陌生,因此对于某些人来说,这个问题听起来有些愚蠢,为此致歉!实际上,我有一个需求,我需要更改现有cosmos db集合的结构以适合另一个附加属性。如何使用存储过程来做到这一点?现在,我的情况有点像我有一个现有的集合,该集合包含大约60个文档,并且在其他环境中也存在相同的集合。我需要在集合结构中添加一个属性,理想情况下应该是一次活动。

我已经检查过Adding a new property to Cosmos DB,但与此不同的是,我的要求不是通过代码(C#)更新集合,而是通过SP进行更新,就像我说的那样。现在,由于除了Cosmos DB的SELECT查询之外,我们什么都不能使用,因此如何在下面的代码片段中适应ALTER文档的功能?

function updateDocument(documentName){
    var collection = getContext().getCollection();
    var response = getContext().getResponse();
    collection.queryDocuments(

     // ALTER document code goes here

    );
}

2 个答案:

答案 0 :(得分:0)

Cosmos DB是无模式的NoSQL数据库。每个文档都是完全独立的,不需要为了添加新属性而进行任何更改。您可以直接通过Portal进行操作,也可以通过SDK或存储过程以编程方式进行操作。

Cosmos DB中的

SQL查询无法更改集合中的文档。它只能用于查询。

存储的过程可以更改文档,但是它要求您先阅读文档然后进行更新。请记住,它们可以在单个逻辑分区上执行。

我强烈建议您阅读有关CosmosDB的更多信息,因为这听起来您似乎并不完全了解它。

您可以从这里开始:https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-get-started

答案 1 :(得分:0)

首先,在文档级别或集合级别都没有强制模式。存储所需的任何文档属性。

关于更新文档:Core(SQL)API仅通过SQL(例如SELECT语句)提供查询。对于创建,更新或删除,必须使用API​​ / SDK调用。