2

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

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

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

我希望得到的是:

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

2 回答 2

4

从 ArangoDB 2.4 开始,这是可能的。返回创建的文档,原始查询

INSERT @document INTO vertices

必须改为

INSERT @document INTO vertices LET result = NEW RETURN result

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

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

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

于 2015-02-07T22:20:34.523 回答
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

`

于 2015-01-06T09:39:01.827 回答