最后使用 AQL 在 ArangoDB 中插入 _key?

Posted

技术标签:

【中文标题】最后使用 AQL 在 ArangoDB 中插入 _key?【英文标题】:Last inserted _key in ArangoDB with AQL? 【发布时间】:2014-10-10 11:27:00 【问题描述】:

如何使用 AQL 查询在 ArangoDB 中接收最后插入的 _key? 我将项目放在集合中,以下元素必须包含 _key 创建的元素。我如何获得这个_key?

【问题讨论】:

您指的是应该返回生成的密钥的 AQL INSERT 查询吗?或者是在前一个插入操作(在单独的查询或操作中)发生之后执行的 AQL 选择查询? @k.djonua:你还需要这个问题的帮助吗? @13abylon,不,谢谢。我正在用其他方法解决这个问题。 @k.djonua 你能写一个你如何解决这个问题的答案以供将来参考。 【参考方案1】:

关于这个问题的更新: 从 ArangoDB 2.4 开始,即使使用 AQL 查询,也可以检索刚刚插入的文档(或多个文档)。

在 ArangoDB 2.3 的早期版本中,单个文档 INSERT 的语法为:

INSERT  value: 1  IN collection 

无法检索刚刚插入的文档的系统属性(_key_rev 等)。从 2.4 开始,以下也是可能的:

INSERT  value: 1  IN collection LET result = NEW RETURN result

上面返回创建的文档,包括指定的属性(上例为value)和系统属性。

它也适用于多文档插入,例如以下查询

FOR i IN 1..10 
  INSERT  value: i  IN collection

可以变成

FOR i IN 1..10 
  INSERT  value: i  IN collection LET result = NEW RETURN result

返回所有插入的文档。

【讨论】:

【参考方案2】:

遗憾的是,目前 (2.3) 无法通过 AQL 查询接收最后插入的 _key

但是您可以使用db.<collection>.save( Hello : "World" ): 检索最新的_key

【讨论】:

澄清一下:db..save 返回一个具有_key 属性的文档。 从 2.4 开始现在可以了。因此,如果您至少使用 ArangoDB 2.4,请忽略我的答案并查看 stj 的答案【参考方案3】:

返回文件

INSERT myValue: "123", myValue2: "456" INTO myCollection RETURN NEW

只返回_key

INSERT myValue: "123", myValue2: "456" INTO myCollection LET inserted = NEW RETURN inserted._key

【讨论】:

以上是关于最后使用 AQL 在 ArangoDB 中插入 _key?的主要内容,如果未能解决你的问题,请参考以下文章

ArangoDB AQL 深度数组扫描

Arangodb AQL 连接、合并、嵌入嵌套的三个或更多集合

ArangoDB图数据库--总参

Arango db 快速入门

Arango db 快速入门

Arango db 快速入门