Neo4j:生成使用Java检索的节点之间的关系

时间:2014-03-08 14:18:19

标签: java neo4j cypher

我做了什么:

  • 我创建了具有多个属性的节点,例如姓名,年龄,位置,性别等。
  • 我想检索具有匹配属性值的节点并在它们之间创建关系。(例如,具有相同年龄或相同位置的节点)。

我这样做了如下:

   void query()
{
    ExecutionResult result;
    Transaction tx=null;
    ExecutionEngine engine = new ExecutionEngine( graphDb );

    try
    {
        String name="Female";
        tx=graphDb.beginTx();

        result=engine.execute("start n=node(*) where has(n.City) with n.City as city, collect(n) as nodelist, count(*) as count where count > 1 return city, nodelist, count");

        System.out.println(result.dumpToString());
        tx.success();
    }
    catch(Exception e)
    {
        tx.failure();
    }
    finally
    {
        tx.finish();
    }

}

nodelist为我提供了具有相同属性的节点。 我想在这些节点之间建立关系。

如何指向节点列表中的节点? 另外,请建议其他替代方法

1 个答案:

答案 0 :(得分:1)

获取nodelist中的节点:

Iterator<Map<String,Object>> it=result.iterator ();
if(it.hasNext()) {
  Map<String,Object> row=it.next();
  List<Node> nodelist=(List<Node>) row.get("nodelist");
}

您尚未指定要创建的关系类型 - 请查看Create or Merge,如果适用,Foreach - 也许您可以编写一个Cypher查询来完成所有操作。