2016-09-05 1 views
0

У меня следующий документ с док ключ корзина :: 16Update конкретный объект в массиве объекта в couchbase 4,1

{ 
     "_type": "NSCart", 
     "_metadata": { 
       "created_at": 1473075845614, 
       "updated_at": null 
     }, 
     "_id": "f28bc609-6aba-47e5-8e83-5bee2397566f", 
     "userId": "B1HvmsLj57c9235c", 
     "items" : [{ 
       "itemId": "N1d55j8m4xr", 
       "seller": "ByD9T4Ks57cbbd8e", 
       "license": null, 
       "basePrice": 0 
      },{ 
       "itemId": "L9nd6Dswl4v", 
       "seller": "ByD9T4Ks57cbbd8e", 
       "license": E122, 
       "basePrice": 500, 
       "eCharge": 10, 
       "total": 510 
     }] 
} 

теперь я хочу, чтобы обновить документ, где идентификатор элемента является N1d55j8m4xr как это

{ 
     "itemId": "N1d55j8m4xr", 
     "seller": "ByD9T4Ks57cbbd8e", 
     "license": null, 
     "basePrice": 590, 
     "eCharge": 18, 
     "total": 608 
} 

Существует метод array_replace в n1ql, но не получает желаемого результата.

ответ

2

Используйте следующий синтаксис из документации N1QL.

UPDATE mybucket SET x.field = newvalue FOR x IN myarray WHEN x.id = myid END; 
Смежные вопросы