当我使用AQL将文档插入到集合中时,它返回一个空列表。
arangosh [test]> db._query('INSERT @document INTO vertices', {document: {name: "bar"}}).toArray()
[ ]
有没有办法插入文档并在单个AQL查询中获取完整的文档?
我希望得到的是:
{
"_id": "vertices/641272433780",
"_key": "641272433780",
"_rev": "641272433780",
"name": "bar"
}
答案 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
`