Java中的ArangoDB AQL查询异常

Java中的ArangoDB AQL查询异常,arangodb,Arangodb,我正在java中为ArangoDB执行下面的AQL查询,以获取特定节点的子代的总数。这是代码 String nodeUserid = nodeuserid.getText().trim(); Map<String, Object> bindVars = new MapBuilder().put("nodeid", nodeUserid).get(); CursorResult cs = arangoDriver.executeAqlQu

我正在java中为ArangoDB执行下面的AQL查询,以获取特定节点的子代的总数。这是代码

        String nodeUserid = nodeuserid.getText().trim();
        Map<String, Object> bindVars = new MapBuilder().put("nodeid", nodeUserid).get();
        CursorResult cs = arangoDriver.executeAqlQuery("LET x = (FOR v IN 1..1000 OUTBOUND @nodeid GRAPH 'TempPeoplesApp' "
                + " RETURN v.x)"
                + " RETURN SUM(x)", bindVars, null,null);

        int count = cs.getCount();
它在执行arangoDriver.executeAqlQuery方法时出现异常。那么这个问题出了什么问题?有人能建议吗?我是ArangoDB的新手

谢谢,
Mayank

您使用哪一版本的ArangoDB和ArangoDB Java驱动程序

方法
executeAqlQuery
需要知道您希望在CursorResult中使用哪种类型。这是最后一个参数。在您的情况下,您可能希望Aql中的总和为整数

        String nodeUserid = nodeuserid.getText().trim();
        Map<String, Object> bindVars = new MapBuilder().put("nodeid", nodeUserid).get();
        CursorResult<Integer> cs = arangoDriver.executeAqlQuery(
            "LET x = (FOR v IN 1..1000 OUTBOUND @nodeid GRAPH 'TempPeoplesApp' " + " RETURN v.x)" + " RETURN SUM(x)",
            bindVars, null, Integer.class);

        Integer sum = cs.getUniqueResult();
String nodeUserid=nodeUserid.getText().trim();
Map bindVars=new MapBuilder().put(“nodeid”,nodeUserid).get();
CursorResult cs=arangoDriver.executeAqlQuery(
“设x=(对于1..1000出站@nodeid图'TempPeoplesApp'”+“RETURN v.x)”+“RETURN SUM(x)”,
bindVars,null,Integer.class);
整数和=cs.getUniqueResult();
getCount()vs getFullCount()vs getUniqueResult()
getCount()
返回结果总数
getFullCount()
返回带有(aql)limit子句的result的总数。在您的情况下,aql只返回一个结果,即总和。aql可以返回结果列表。当您只有1个结果时,您可以使用
getUniqueResult
获得它,当您有n个结果时,使用方法
iterator()
asList()
并对其进行迭代


方法
executeAqlQuery
支持uniqe-aql-result-Java bean上所有基元类型、Map、List和的包装类。

Hi-mpv,感谢您指出了正确的方向。我使用的是ArangoDB版本3.0.2和java驱动程序版本2.4。现在我用最新版本3.0.0替换了java驱动程序。并且必须像这样更改代码,CursorResult cs=arangoDriver.executeAqlQuery(“LET x=(对于1..1000 OUTBOUND@nodeid GRAPH'TempPeoplesApp'”+“RETURN v.x)”+“RETURN SUM(x)”,bindVars,null,null);在执行这段代码时,我在同一行得到NullPointerException。你能给我一些提示吗?你能更新你的问题plz中的堆栈输出吗?谢谢它能工作。CursorResult的getCount()、getFullCount()和getUniqueResult()方法之间有什么区别?顺便问一下,它是否支持executeAqlQuery()方法中的所有java包装类作为参数。
        String nodeUserid = nodeuserid.getText().trim();
        Map<String, Object> bindVars = new MapBuilder().put("nodeid", nodeUserid).get();
        CursorResult<Integer> cs = arangoDriver.executeAqlQuery(
            "LET x = (FOR v IN 1..1000 OUTBOUND @nodeid GRAPH 'TempPeoplesApp' " + " RETURN v.x)" + " RETURN SUM(x)",
            bindVars, null, Integer.class);

        Integer sum = cs.getUniqueResult();