2014-10-17 63 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