Azure Cosmos DB SQL API UPDATE 语句 - 不要替换整个文档
Azure Cosmos DB SQL API UPDATE statement - don't replace whole document
我可以为 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
更新为 ID 为 "9e576f8b-146f-4e7f-a68f-14ef816e0e50"
的 1。我可以在不完全替换文档的情况下使用 Azure SQL API 做到这一点吗?
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
微软已经开始着手解决这个问题,所以你唯一能做的就是等待。
要对此进行详细说明,无法在服务器上部分更新 CosmosDb
中的文档,相反,您可以在memory.In 为了从字面上 UPDATE
文件,你将不得不从 CosmosDb 中检索整个文件,更新 property/properties
您需要更新,然后调用 CosmosDb SDK 中的“替换”方法来替换有问题的文档。或者,您也可以使用“Upsert”来检查文档是否已经存在,如果为真则执行 ‘Insert’
,如果 false.
则执行“替换”
注意:在提交更新之前确保您拥有最新版本的文档!
正如 Nick 提到的,Cosmosdb 团队正在研究 partial update.
更新:
CosmosDB 将支持部分更新已正式发布。您可以从 here
阅读更多内容
使用 Robo3T 通过 mongo 数据库命令 update/delete 多条记录。确保您的查询包含分区键。
db.getCollection('ListOfValues').updateMany({type:'PROPOSAL', key:"CITI"},{$set: {"key":"CITIBANK"}})
db.getCollection('ListOfValues').deleteMany({type:'PROPOSAL', key:"CITI"})
自 2021 年 5 月 25 日起,此功能在个人预览版中可用,希望很快会在 GA 中提供。
您可以使用补丁 API 进行部分更新。
参考:https://docs.microsoft.com/en-us/azure/cosmos-db/partial-document-update
我可以为 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
更新为 ID 为 "9e576f8b-146f-4e7f-a68f-14ef816e0e50"
的 1。我可以在不完全替换文档的情况下使用 Azure SQL API 做到这一点吗?
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
微软已经开始着手解决这个问题,所以你唯一能做的就是等待。
要对此进行详细说明,无法在服务器上部分更新 CosmosDb
中的文档,相反,您可以在memory.In 为了从字面上 UPDATE
文件,你将不得不从 CosmosDb 中检索整个文件,更新 property/properties
您需要更新,然后调用 CosmosDb SDK 中的“替换”方法来替换有问题的文档。或者,您也可以使用“Upsert”来检查文档是否已经存在,如果为真则执行 ‘Insert’
,如果 false.
则执行“替换”
注意:在提交更新之前确保您拥有最新版本的文档!
正如 Nick 提到的,Cosmosdb 团队正在研究 partial update.
更新:
CosmosDB 将支持部分更新已正式发布。您可以从 here
阅读更多内容使用 Robo3T 通过 mongo 数据库命令 update/delete 多条记录。确保您的查询包含分区键。
db.getCollection('ListOfValues').updateMany({type:'PROPOSAL', key:"CITI"},{$set: {"key":"CITIBANK"}})
db.getCollection('ListOfValues').deleteMany({type:'PROPOSAL', key:"CITI"})
自 2021 年 5 月 25 日起,此功能在个人预览版中可用,希望很快会在 GA 中提供。
您可以使用补丁 API 进行部分更新。 参考:https://docs.microsoft.com/en-us/azure/cosmos-db/partial-document-update