在单个AQL查询中插入和返回文档

时间:2015-01-05 21:19:23

标签: arangodb aql

当我使用AQL将文档插入到集合中时,它返回一个空列表。

arangosh [test]> db._query('INSERT @document INTO vertices', {document: {name: "bar"}}).toArray()
[ ]

有没有办法插入文档并在单个AQL查询中获取完整的文档?

我希望得到的是:

{
  "_id": "vertices/641272433780",
  "_key": "641272433780",
  "_rev": "641272433780",
  "name": "bar"
}

2 个答案:

答案 0 :(得分:3)

这是可能的,因为ArangoDB 2.4。要返回创建的文档,请使用原始查询

INSERT @document INTO vertices

必须改为

INSERT @document INTO vertices LET result = NEW RETURN result

这也适用于多文档INSERT以及UPDATE / REPLACE和REMOVE。 2.4 documentation中的以下引用描述了语法:

  

要从数据修改查询返回文档,INSERT,REMOVE,UPDATE或REPLACE语句必须紧跟一个LET语句,该语句将伪值NEW或OLD分配给用户定义的变量。 LET语句后面必须跟一个RETURN语句,该语句返回LET引入的变量。

     

NEW指的是插入或修改的文档修订版,OLD指的是更新或删除之前的文档修订版。 INSERT语句只能引用NEW伪值,而REMOVE操作只能引用OLD。 UPDATE和REPLACE可以参考。

答案 1 :(得分:1)

实现该功能后,它将如下所示:

INSERT expression IN|INTO collection [ OPTIONS expression ] WITH NEW INTO variable RETURN variable;

REMOVE expression IN|INTO collection [ OPTIONS expression ] WITH OLD INTO variable RETURN variable;

UPDATE expression IN|INTO collection [ OPTIONS expression ] WITH OLD|NEW INTO variable RETURN variable
UPDATE expression WITH expression IN|INTO collection [ OPTIONS expression ] WITH OLD|NEW INTO variable RETURN variable

`