Java中的ArangoDB AQL查询异常
我正在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
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();