【问题标题】:Arangodb AQL UPDATE for internal field of object对象内部字段的 Arangodb AQL 更新
【发布时间】:2014-10-17 12:18:54
【问题描述】:

给定以下收集的示例文档:

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

如何使用“已读取”键更新对象中特定键的值?例如更新键“8”的值:

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

【问题讨论】:

    标签: arangodb aql nosql


    【解决方案1】:

    您可以按如下方式使用 MERGE 或 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" })
    

    Merge 将合并文档,之后的值将覆盖之前的值。详情请见http://docs.arangodb.org/Aql/Functions.html

    【讨论】:

    • 我认为通过像这样的另一个参数在 collection.update 方法中公开这个函数是有意义的:collection.update(document, data, overwrite, keepNull, waitForSync, mergeRecursive) 作为更新内部字段是一个常见的用例。
    • 错字:不应该是WITH { 'read': MERGE_RECURSIVE(u.read, { '8': 10 }) }吗? (缺少打开{
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多