Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Arangodb AQL UPDATE for internal field of object

Given the following example document of collection:

{
  "timestamp": 1413543986,
  "message": "message",
  "readed": {
    "8": null,
    "9": null,
    "22": null
  },
  "type": "1014574149174"
}

How do I update the value of specific key in object with key "readed"? For example update value for key "8":

...
   "8": 10,
...
like image 882
VasiliyKobzev Avatar asked Oct 17 '14 12:10

VasiliyKobzev


1 Answers

You can use MERGE or MERGE_RECURSIVE as follows:

db._query("FOR u IN test FILTER u._key == @key UPDATE u WITH
  'read': MERGE_RECURSIVE(u.read, { '8': 10 }) } IN test",
  { key: "11611344050" })

Merge will merge documents, where later values will overwrite earlier ones. See http://docs.arangodb.org/Aql/Functions.html for details.

like image 148
fceller Avatar answered Sep 21 '22 03:09

fceller