【问题标题】:Neo4j:Generate relationship between nodes retrieved using JavaNeo4j:生成使用Java检索的节点之间的关系
【发布时间】:2014-03-08 14:18:18
【问题描述】:

我做了什么:

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

我已经这样做了:

   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();
    }

}

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

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

【问题讨论】:

  • 不要为每个查询方法创建执行引擎,在启动时创建一次并保留它。

标签: java neo4j cypher


【解决方案1】:

获取节点列表中的节点:

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 查询来完成所有操作。

【讨论】:

  • 我想在节点列表中存在的所有节点之间创建一个简单的 KNOWS 关系。您能帮我了解一下单个密码查询如何帮助我获取具有匹配属性值的所有节点并在它们之间创建关系?
  • 我通过了foreach,我想在节点列表中的所有节点之间创建如下关系,如下所示。CREATE (node1)(node2))。我的节点是我在节点列表中获得的节点。我无法理解如何指向节点列表中的节点以便在创建关系密码中使用它们查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多