动态设置集合时出错

Error when set collection dynamically

Blow 代码是对 :https://www.arangodb.com/tutorials/tutorial-python/

的微小修改
doc = {"_key": 'some_nice_key', "name": 'Robert', "age": '56'}
bindVars = {"doc": doc,"collection":"test"}
aql = "INSERT @doc INTO @collection LET newDoc = NEW RETURN newDoc"
queryResult = db.AQLQuery(aql, bindVars = bindVars)

,我刚刚做了一些修改:

{"doc": doc}  -> {"doc": doc,"collection":"test"}
INSERT @doc INTO users... -> INSERT @doc INTO @collection...

它给我错误:

bind parameter 'bind parameter 'collection' has an invalid value or type near '@collection LET newDoc = NEW RET...' at position 1:18' has an invalid value or type (while parsing). Errors: {u'code': 400, u'errorNum': 1553, u'errorMessage': u"bind parameter 'bind parameter 'collection' has an invalid value or type near '@collection LET newDoc = NEW RET...' at position 1:18' has an invalid value or type (while parsing)", u'error': True}

aql 不支持动态集合还是我犯了什么错误?

AQL 支持注入集合名称。但这是一个特殊情况,您必须使用额外的 @ 作为前缀。 https://docs.arangodb.com/3.0/AQL/Fundamentals/BindParameters.html

通过此修改,您的代码应该可以工作:

doc = {"_key": 'some_nice_key', "name": 'Robert', "age": '56'}
bindVars = {"doc": doc,"@collection":"test"}
aql = "INSERT @doc INTO @@collection LET newDoc = NEW RETURN newDoc"
queryResult = db.AQLQuery(aql, bindVars = bindVars)