首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >了解cypher输出

了解cypher输出
EN

Stack Overflow用户
提问于 2012-05-22 22:58:30
回答 2查看 257关注 0票数 0

我有一个这样的图:(2)<-0:CHILD-(1)-1:CHILD->(3)换句话说:节点1,2和3(都有名字);边0和1

我编写了以下cypher-query:

代码语言:javascript
运行
复制
START nodes = node(1,2,3), relationship = relationship(0,1) 
RETURN nodes, relationship

得到的结果是:

代码语言:javascript
运行
复制
==> +-----------------------------------------------+
==> | nodes                          | relationship |
==> +-----------------------------------------------+
==> | Node[1]{name->"Risikogruppe2"} | :CHILD[0] {} |
==> | Node[1]{name->"Risikogruppe2"} | :CHILD[1] {} |
==> | Node[2]{name->"Beruf 1"}       | :CHILD[0] {} |
==> | Node[2]{name->"Beruf 1"}       | :CHILD[1] {} |
==> | Node[3]{name->"Beruf 2"}       | :CHILD[0] {} |
==> | Node[3]{name->"Beruf 2"}       | :CHILD[1] {} |
==> +-----------------------------------------------+
==> 6 rows, 0 ms

现在我的问题是:为什么我两次成为所有节点,三次成为关系?我只想一次得到所有的东西。

感谢您抽出时间^^

EN

回答 2

Stack Overflow用户

发布于 2013-06-09 05:51:55

Cypher的工作方式与SQL非常相似。当您在START子句中创建变量时,您可以在SQL (表)中执行from nodes, relationships。你得到这两个值的所有可能值的笛卡尔乘积的原因是因为你没有做任何类型的matchwhere来过滤它们,所以它基本上是这样的:

代码语言:javascript
运行
复制
select *
from nodes, relationships

您忘记在表之间放置外键关系的位置。

在Cypher中,通常通过执行匹配来完成此操作:

代码语言:javascript
运行
复制
start n=node(1,2,3), r=relationship(0,1)
match n-[r]-m // find where the n nodes and the r relationships point (to m)
return *

但是因为你没有匹配项,所以你得到了笛卡尔乘积。

票数 1
EN

Stack Overflow用户

发布于 2012-05-22 23:14:28

您应该只看到节点和关系一次,除非您进行了一些匹配。

我试着重现你的问题,但我没能做到。

http://tinyurl.com/cobd8oq

你能为你的问题创建一个console.neo4j.org示例吗?

谢谢,

安德烈

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10704620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档