Cosmos DB Patchen eines Arrays innerhalb eines Arrays
Posted: 12 Jan 2025, 17:12
Cosmos DB ermöglicht Ihnen, ein Array-Element wie folgt zu aktualisieren:
Dies funktioniert wie erwartet und ersetzt das vorhandene Array-Element. Jetzt möchte ich jedoch ein Array aktualisieren, das sich innerhalb des Arrays befindet. Mit anderen Worten, ich habe ein Array vom Typ Dialog (das sich in einer „Lektion“ befindet). Jeder Dialog verfügt über eine Reihe von Unterdialogen. Deshalb möchte ich jetzt einen der Unterdialoge aktualisieren, ohne das gesamte Array der Unterdialoge zu ersetzen.
Also versuche ich diesen Vorgang:
Und es aktualisiert tatsächlich das Array, aber nicht in der erwarteten Weise. Anstatt das vorhandene Array zu ersetzen, werden sie dem Array-Element als zusätzliche Eigenschaften hinzugefügt. Es sollte das vorhandene Element ersetzen und keine zusätzlichen Eigenschaften hinzufügen.
Der zurückgegebene Statuscode ist „Erfolgreich“ und es wird kein Fehler ausgegeben.
Mache ich etwas falsch, oder handelt es sich um einen Fehler in Cosmos DB? Ich habe bestätigt, dass die Array-Indizes korrekt sind. Es ist auch wirklich seltsam, dass der Name der JSON-Eigenschaft eine leere Zeichenfolge ist.
Wie aktualisiere (patche) ich erfolgreich ein Array, das sich innerhalb eines Arrays befindet?
Code: Select all
ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set($"/dialogs/{dialog.OriginalIndex}", dialog)
});
Also versuche ich diesen Vorgang:
Code: Select all
ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set
($"/dialogs/{parentDialog.OriginalIndex}/subdialogs/{dialog.OriginalIndex}/", dialog)
});
Code: Select all
"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"
]
}
}
[
Mache ich etwas falsch, oder handelt es sich um einen Fehler in Cosmos DB? Ich habe bestätigt, dass die Array-Indizes korrekt sind. Es ist auch wirklich seltsam, dass der Name der JSON-Eigenschaft eine leere Zeichenfolge ist.
Wie aktualisiere (patche) ich erfolgreich ein Array, das sich innerhalb eines Arrays befindet?