我正在为ArangoDB使用java驱动程序。 我在String变量中有一个JSON数组,我希望它插入表中。我使用以下查询
for r in @fromCollection insert r into @targetCollection
在Web界面中插入顺利,但在Java中我遇到了绑定这两个变量的麻烦 -
1553 - ERROR_QUERY_BIND_PARAMETER_TYPE
Will be raised when a bind parameter has an invalid value or type
你能帮助我将集合名称绑定为ArangoDB中的变量吗?
答案 0 :(得分:2)
我不确定您的JSON String变量如何在此查询中扮演角色。
如果要插入String变量中包含的JSON文档,可以使用方法importDocuments(String)
:
ArangoDB arango = new ArangoDB.Builder().build();
arango.db().collection("myCollection").importDocuments(jsonArray);
与您的查询问题相关:
存在用于注入集合名称的特殊类型的绑定参数。这种类型的绑定参数的名称前缀为额外的@
符号(因此在查询中使用bind参数时,必须使用两个@
符号)。有关绑定参数的更多信息,请查看here
您的查询必须看:
for r in @@fromCollection insert r into @@targetCollection
在Java中,它看起来如下:
ArangoDB arango = new ArangoDB.Builder().build();
Map<String, Object> bindVars = new HashMap<>();
bindVars.put("@fromCollection", "...");
bindVars.put("@toCollection", "...");
arango.db().query("for r in @@fromCollection insert r into @@targetCollection", bindVars, null, BaseDocument.class)