在ArangoDB AQL中,无论集合如何,如何更新每个遍历对象的字段?

根德尔

UPDATE语句需要一个集合名称。在图形中,我想遍历一条边并更新访问的每个顶点。

类似于:FOR v IN 1..50 INBOUND'pmconfig / 6376876'pm_content选项{uniqueVertices:“ global”} [update v.contentsChanged = true]

由于顶点可以在不同的集合中找到,我是否必须将对象划分为每个集合列表?

j

无法使用动态(运行时)集合名称更新文档。例如,以下AQL查询将不会编译:

FOR v IN 1..50 INBOUND 'pmconfig/6376876' pm_content
  UPDATE v WITH { contentsChanged : true } IN PARSE_IDENTIFIER(v._id).collection

原因是UPDATE和其他数据修改语句要求在查询编译时知道它们的集合名称。当然,使用绑定参数将起作用,但是不允许运行时表达式。

一种解决方法是多次运行遍历,每次都使用硬编码集合进行更新。这仍然需要事先了解集合名称。如果图形在以下之间进行更改,则可能还会存在一致性问题:

FOR v IN 1..50 INBOUND 'pmconfig/6376876' pm_content
  FILTER PARSE_IDENTIFIER(v._id).collection == 'vertexCollection1'
  UPDATE v WITH { contentsChanged : true } IN vertexCollection1

FOR v IN 1..50 INBOUND 'pmconfig/6376876' pm_content
  FILTER PARSE_IDENTIFIER(v._id).collection == 'vertexCollection2'
  UPDATE v WITH { contentsChanged : true } IN vertexCollection2

...

另一个解决方法是让遍历已经生成每个集合列表,并对每个集合发出后续查询。例如,以下查询应返回每个集合要更新的键:

FOR v IN 1..50 INBOUND 'pmconfig/6376876' pm_content
  LET parts = PARSE_IDENTIFIER(v._id) 
  COLLECT collection = parts.collection INTO keys = parts. key 
  RETURN { collection, keys }

结果示例:

[    
  { 
     "collection" : "vertexCollection1", 
     "keys" : [ 
       "abc" 
     ]    
  },    
  { 
    "collection" : "vertexCollection2", 
    "keys" : [ 
      "xyz", 
      "ddd" 
    ]    
  }  
]

使用结果结构,可以轻松构造后续更新查询并发送更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AQL(ArangoDb)中的递归遍历

来自分类Dev

如何避免与ArangoDB中的AQL冲突?

来自分类Dev

从 csv 更新 ArangoDB 集合

来自分类Dev

Arangodb AQL递归图遍历

来自分类Dev

对象内部字段的Arangodb AQL UPDATE

来自分类Dev

在ArangoDB中遍历

来自分类Dev

AQL的Arangodb反应慢

来自分类Dev

如何避免Arangodb集合锁

来自分类Dev

ArangoDB AQL:更新嵌入式阵列中的单个对象

来自分类Dev

ArangoDB,如何显示图形?

来自分类Dev

ArangoDB,如何显示图形?

来自分类Dev

如何停止ArangoDB?

来自分类Dev

开发中的ArangoDB安装

来自分类Dev

如何处理ArangoDB / AQL中的过期数据

来自分类Dev

如何处理ArangoDB / AQL中的过期数据

来自分类Dev

如何在AQL中为arangodb引用/转义字段名称?

来自分类Dev

如何在AQL中为arangodb引用/转义字段名?

来自分类Dev

从AQL查询数组导入Arangodb

来自分类Dev

Arangodb AQL类似于SQL的NOT IN

来自分类Dev

.Net中的ArangoDB更新操作

来自分类Dev

如何使用WebInterface从ArangoDB删除集合?

来自分类Dev

ArangoDB AQL中(n)个数组的交集

来自分类Dev

ArangoDB FOXX日志记录:如何

来自分类Dev

包括边缘的arangodb遍历树

来自分类Dev

包括边的arangodb遍历树

来自分类Dev

ArangoDB索引与边缘集合的使用

来自分类Dev

在ArangoDB上加载大型集合

来自分类Dev

ArangoDB修改集合属性(keyOptions)

来自分类Dev

如何从arangodb-php调用ArangoDB Foxx应用程序