Оператор UPDATE SQL API Azure Cosmos DB - не заменять весь документ - PullRequest
2 голосов
/ 15 мая 2019

Можно ли написать оператор UPDATE для Azure Cosmos DB? SQL API поддерживает запросы, но как насчет обновлений?

В частности, я хочу обновить документы без необходимости извлечения всего документа. У меня есть идентификатор для документа, и я знаю точный путь, который я хочу обновить в документе. Например, скажите, что мой документ

{
  "id": "9e576f8b-146f-4e7f-a68f-14ef816e0e50",
  "name": "Fido",
  "weight": 35,
  "breed": "pomeranian",
  "diet": {
    "scoops": 3,
    "timesPerDay": 2
  }
}

и я хочу обновить diet.timesPerDay до 1, где идентификатор равен "9e576f8b-146f-4e7f-a68f-14ef816e0e50". Могу ли я сделать это с помощью API Azure SQL без полной замены документа?

Ответы [ 2 ]

3 голосов
/ 15 мая 2019

Язык SQL Cosmos DB поддерживает только оператор Select.

Частичное обновление документа не поддерживается с помощью языка SQL или API SQL.

Люди ясно дали понять, что это особенность, которую они хотят, поэтому есть запрос с большим количеством голосов, который можно найти здесь: https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-be-able-to-do-partial-updates-on-document

Microsoft уже начала работать над этим, поэтому единственное, что вы можете сделать, это подождать.

0 голосов
/ 16 мая 2019

Более подробно об этом, Частичное обновление документа в CosmosDb на сервере невозможно, вместо этого вы можете делать все, что вам нужно сделать в памяти. Буквально UPDATE документа, вам нужно будет извлечь весь документ из CosmosDb, обновить property/properties, который нужно обновить, а затем вызвать метод «Заменить» в CosmosDb SDK для замены рассматриваемого документа. В качестве альтернативы вы также можете использовать «Upsert», который проверяет, существует ли документ и выполняет ‘Insert’, если true или «Replace», если false.

ПРИМЕЧАНИЕ: Убедитесь, что у вас установлена ​​последняя версия документа, прежде чем обновлять обновление!

Как отметил Ник, команда Cosmosdb работает над partial update.

...