Azure Cosmos DB SQL API UPDATE语句-不替换整个文档

lokaqttq  于 2022-11-25  发布在  其他
关注(0)|答案(5)|浏览(125)

我可以为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在不完全替换文档的情况下执行此操作?

qcuzuvrc

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
微软已经开始着手这方面的工作,所以你唯一能做的就是等待。

vktxenjb

vktxenjb2#

要详细说明这一点,在服务器上更新**CosmosDb中的部分文档是不可能的,相反,您可以在内存中做任何您需要做的事情。为了真正地UPDATE文档,您必须从CosmosDb中检索整个文档,更新需要更新的property/properties,然后调用CosmosDb SDK中的“Replace”方法来替换有问题的文档。或者,您也可以使用“Upsert”检查文档是否已存在,如果为true,则执行‘Insert’,如果为false.**,则执行“替换”

**注意:**在提交更新之前,请确保您拥有文档得最新版本!
更新日期:

CosmosDB对部分更新的支持是GAed。您可以从here阅读更多信息

guicsvcw

guicsvcw5#

使用Robo 3 T用mongo db命令更新/删除多个记录。确保您的查询包括分区键。

db.getCollection('ListOfValues').updateMany({type:'PROPOSAL', key:"CITI"},{$set: {"key":"CITIBANK"}})

db.getCollection('ListOfValues').deleteMany({type:'PROPOSAL', key:"CITI"})

相关问题