我可以为Azure Cosmos DB编写UPDATE
语句吗?SQL API支持查询,但更新怎么办?
特别是,我希望更新文档而不必检索整个文档。我有文档的ID,并且知道要在文档中更新的确切路径。例如,假设我的文档是
{
"id": "9e576f8b-146f-4e7f-a68f-14ef816e0e50",
"name": "Fido",
"weight": 35,
"breed": "pomeranian",
"diet": {
"scoops": 3,
"timesPerDay": 2
}
}
我想将diet.timesPerDay
更新为1,其中ID为"9e576f8b-146f-4e7f-a68f-14ef816e0e50"
。我是否可以使用Azure SQL API在不完全替换文档的情况下执行此操作?
5条答案
按热度按时间qcuzuvrc1#
Cosmos DB SQL语言仅支持
Select
语句。SQL语言或SQL API不支持部分更新文档。
人们已经明确表示,这是他们想要的功能,所以有一个高度支持的要求,可以在这里找到:https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-be-able-to-do-partial-updates-on-document
微软已经开始着手这方面的工作,所以你唯一能做的就是等待。
vktxenjb2#
要详细说明这一点,在服务器上更新**
CosmosDb
中的部分文档是不可能的,相反,您可以在内存中做任何您需要做的事情。为了真正地UPDATE
文档,您必须从CosmosDb中检索整个文档,更新需要更新的property/properties
,然后调用CosmosDb SDK中的“Replace”方法来替换有问题的文档。或者,您也可以使用“Upsert”检查文档是否已存在,如果为true,则执行‘Insert’
,如果为false.
**,则执行“替换”**注意:**在提交更新之前,请确保您拥有文档得最新版本!
更新日期:
CosmosDB对部分更新的支持是GAed。您可以从here阅读更多信息
798qvoo83#
可以使用补丁程序API进行部分更新。请参阅:https://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update
50pmv0ei4#
截至25.05.2021该功能可在私人预览,并有望在GA很快。
https://azure.microsoft.com/en-us/updates/partial-document-update-for-azure-cosmos-db-in-private-preview/
guicsvcw5#
使用Robo 3 T用mongo db命令更新/删除多个记录。确保您的查询包括分区键。