我正在遵循文档: 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 {}
}
答案 0 :(得分:4)
您需要使用Document Field Path Syntax 更新单个地图条目。
{
"update":"id:ITEM:ITEM::ITEM_1",
"fields":{
"status{0}.f1": { "assign": "changed" }
}
}