Присвоение поля значения структуры в карте <.., структура> удаляет неопределенные значения - PullRequest
0 голосов
/ 14 февраля 2019

Я следую документации: https://docs.vespa.ai/documentation/reference/document-json-update-format.html#assign-map-field

Когда я обновляю одно поле структуры на карте, чтобы структурировать, неопределенные значения удаляются.Это ошибка или ожидаемое поведение?Я хотел бы сохранить другие значения.

Перед обновлением объект выглядит следующим образом

...
"status":[  
   {  
      "key":0,
      "value":{  
         "f1":"before",
         "f2":"before2"
      }
   }
]
...

Я делаю запрос HTTP PUT

{
   "update":"id:ITEM:ITEM::ITEM_1",
   "fields":{
      "status{0}":{
         "assign":{
            "f1: "changed"
         }
      }
   }
}

после PUTполе f1 изменяется, но поле f2 удаляется

"status":[
   {
      "key":0,
      "value":{
         "f1":"changed"
      }
   }
]
field status type map<int, status> {
     indexing: summary
     struct-field key { indexing: attribute }
     struct-field value.f1 { indexing: summary | attribute}
     struct-field value.f2 { indexing: summary | attribute}
}

struct status {
     field f1 type string {}
     field f2 type string {}
}

1 Ответ

0 голосов
/ 14 февраля 2019

Вам необходимо использовать Синтаксис пути к полю документа для обновления отдельных записей карты.

{
   "update":"id:ITEM:ITEM::ITEM_1",
   "fields":{
      "status{0}.f1": { "assign": "changed" }
   }
}
...