在arangoDB的java驱动程序中绑定集合

时间:2017-10-11 08:43:30

标签: java arangodb

我正在为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中的变量吗?

1 个答案:

答案 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)