Sco*_*y H 10 azure azure-cosmosdb azure-cosmosdb-sqlapi
我可以UPDATE为 Azure Cosmos DB编写语句吗?SQL API 支持查询,但更新呢?
特别是,我希望更新文档而不必检索整个文档。我有文档的 ID,我知道我想在文档中更新的确切路径。例如,假设我的文档是
{
"id": "9e576f8b-146f-4e7f-a68f-14ef816e0e50",
"name": "Fido",
"weight": 35,
"breed": "pomeranian",
"diet": {
"scoops": 3,
"timesPerDay": 2
}
}
Run Code Online (Sandbox Code Playgroud)
我想更新diet.timesPerDay到 ID 所在的 1 "9e576f8b-146f-4e7f-a68f-14ef816e0e50"。我可以在不完全替换文档的情况下使用 Azure SQL API 做到这一点吗?
Nic*_*sas 12
Cosmos DB SQL 语言仅支持Select语句。
不支持通过 sql 语言或 SQL API 部分更新文档。
人们已经明确表示这是他们想要的功能,因此可以在此处找到一个高度赞成的请求:https ://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-能够对文档进行部分更新
微软已经开始着手这方面的工作,所以你唯一能做的就是等待。
CosmosDb为了详细说明这一点,在服务器上部分更新文档是不可能的,相反,您可以在内存中执行任何您需要执行的操作。为了从字面上UPDATE更新文档,您将必须检索从 CosmosDb 中获取整个文档,更新property/properties您需要更新的文档,然后调用 CosmosDb SDK 中的 \xe2\x80\x98Replace\xe2\x80\x99 方法来替换有问题的文档。或者,您也可以使用 \xe2\x80\x98Upsert\xe2\x80\x99 来检查文档是否已存在并执行\xe2\x80\x98Insert\xe2\x80\x99if true 或 \xe2\x80\x98Replace\xe2\x80\x99 iffalse.
注意:在提交更新之前,请确保您拥有该文档的最新版本!
\n更新 :
\nCosmosDB 对部分更新的支持已正式发布。您可以从 这里阅读更多内容
\n小智 0
您可以使用 Patch API 进行部分更新。请参阅:https ://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update
| 归档时间: |
|
| 查看次数: |
15118 次 |
| 最近记录: |