【问题标题】:Bind collection in java driver for arangoDB在 arangoDB 的 java 驱动程序中绑定集合
【发布时间】:2017-10-11 08:43:30
【问题描述】:

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

【问题讨论】:

  • 别忘了将以下内容标记为答案,如果不是,请评论原因。

标签: java arangodb


【解决方案1】:

我不确定您的 JSON 字符串变量如何在此查询中发挥作用。

当您想要插入包含在您的 String 变量中的 JSON 文档时,您可以使用 importDocuments(String) 方法:

ArangoDB arango = new ArangoDB.Builder().build();
arango.db().collection("myCollection").importDocuments(jsonArray);

与您的查询问题有关:

存在一种特殊类型的绑定参数,用于注入集合名称。这种类型的绑定参数的名称以附加的@ 符号为前缀(因此在查询中使用绑定参数时,必须使用两个@ 符号)。有关绑定参数的更多信息,请查看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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多