2014-10-17 67 views
5

的内部磁场鉴于收集的以下示例文件:Arangodb AQL更新对象

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

如何在目标与关键更新特定键的值“readed”?针对键“8”的例子更新值:

... 
    "8": 10, 
... 

回答

5

如下您可以使用合并或MERGE_RECURSIVE:

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

合并将合并文档,在以后的值将覆盖前面的。详情请参阅http://docs.arangodb.org/Aql/Functions.html

+1

我认为通过另一个参数如collection.update在collection.update方法中公开这个函数是有意义的:更新内部字段的collection.update(document,data,overwrite,keepNull,waitForSync,mergeRecursive)是一个常用的案件。 – mikestaub 2015-12-21 22:04:38