Cosmos DB Исправление массива внутри массиваC#

Место общения программистов C#
Ответить
Anonymous
 Cosmos DB Исправление массива внутри массива

Сообщение Anonymous »

Cosmos DB позволяет обновлять элемент массива следующим образом:

Код: Выделить всё

ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set($"/dialogs/{dialog.OriginalIndex}", dialog)
});
Это работает, как и ожидалось, заменяя существующий элемент массива. Но теперь я хочу обновить массив, находящийся внутри массива. Другими словами, у меня есть массив типа Dialog (который находится в «Уроке»). Каждый диалог имеет массив поддиалогов. Итак, теперь я хочу обновить один из поддиалогов, не заменяя весь массив поддиалогов.
Поэтому я пробую эту операцию:

Код: Выделить всё

ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set
($"/dialogs/{parentDialog.OriginalIndex}/subdialogs/{dialog.OriginalIndex}/", dialog)
});
И он действительно обновляет массив, но не так, как ожидалось. Вместо замены существующего массива он добавляется к элементу массива в качестве дополнительных свойств. Он должен заменять существующий элемент, а не добавлять дополнительные свойства.

Код: Выделить всё

"subdialogs": [
{
"id": "TESTMIC-COULDNOTHEARYOU",
"regenerateAudio": true,
"isMessageSSML": false,
"messages": [
"This is the message."
],
//This is what is added. Note the empty property name!
"": {
"id": "TESTMIC-COULDNOTHEARYOU",
"regenerateAudio": false,
"isMessageSSML": false,
"messages": [
"This is the message"
]
}
}
[
Возвращается код состояния «Успех», ошибок не возникает.
Я делаю что-то неправильно или это ошибка в Cosmos DB? Я подтвердил, что индексы массива правильные. Также очень странно, что имя свойства json представляет собой пустую строку.
Как успешно обновить (исправить) массив, находящийся внутри массива?

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-an-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»