【问题标题】:Neo4j Return nodes as a new graphNeo4j 将节点作为新图返回
【发布时间】:2014-08-12 06:08:54
【问题描述】:

有没有办法使用 Cypher 查询 Neo4j 中的节点,结果是一个新图?

我的意思是,这样的事情(不起作用):

MATCH (n1:NODE_TYPE)<-[:INTERACTION_NODE]-
      (int:INTERACTION)
      -[:INTERACTION_NODE]->(n2:NODE_TYPE)
WHERE n1 <> n2
RETURN (n1)<-->(n2)

它或多或少类似于返回n1和n2之间的路径,但忽略了int节点。

【问题讨论】:

  • 您希望 n1 和 n2 之间的新关系保持不变吗?如果您可以创建新边并将其与两个节点一起返回。
  • 您想在 .NET 中执行此操作吗?
  • 我实际上正在使用 REST API,我不希望这种优势持续存在

标签: neo4j


【解决方案1】:

您不能从不在图表中的查询返回数据。你可以做的是MATCH 然后CREATE 你想要的新图表,像这样:

MATCH (n1:NODE_TYPE)<-[:INTERACTION_NODE]-
      (int:INTERACTION)
      -[:INTERACTION_NODE]->(n2:NODE_TYPE)
WHERE n1 <> n2
CREATE (n1)-[r:something]->(n2)
RETURN n1, r, n2

请注意,这样做的副作用是不仅返回了数据,而且还创建并写入了您的数据库。

但另一方面,从RETURN 语句返回的数据在被 shell 打印出来时总是表格形式。如果要将RETURN 的结果可视化为图形,则应使用the web interface。如果你使用它,那么上面我示例中的RETURN 语句实际上会返回一张图表的图片。

【讨论】:

  • 你认为是否可以只在内存中创建这个新图?也许使用其他语言,如 gremlin。
  • 在这种情况下,您使用的语言与它没有任何关系。至于只在记忆中……为什么?您应该修改您的问题以指定您为什么要这样做,以及您希望完成什么。它将帮助我们给出更好的答案。至于内存中的 neo4j 数据库,如果你使用 ramfs 之类的东西,你可以这样做:stackoverflow.com/questions/13325084/…
  • 抱歉,我的评论不清楚。我有一个不在内存中的 neo4j 数据库。我不想弄乱人们正在使用的图形模型。所以,与其通过 CREATE 语句写入这个数据库,我想知道是否可以在内存中临时创建这个新图,或者可能不是完全不同的实例。我已经引用了 gremlin 试图说它不需要是唯一的密码解决方案。现在更清楚了吗?
猜你喜欢
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多