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

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

【问题讨论】:

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

标签: lastinsertid arangodb aql


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多