Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何选择从neo4j传播的关系?_Neo4j_Cypher_Graph Databases - Fatal编程技术网

如何选择从neo4j传播的关系?

如何选择从neo4j传播的关系?,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我们有一个场景来显示向用户传播图片(或消息)的关系 例如:节点A的关系1有一条消息“Foo”,节点2的关系2也有相同的消息“Foo”。。。节点n的关系n也具有相同的消息“Foo”。 现在我们将通过查询Neo4j显示一个关系图 这是我的疑问: MATCH (a)-[r1]-()-[r2]-()-[r3]-()-[r4] WHERE a.id = '59072662' and r2.message_id = r1.target_message_id and r3.message_id = r2.ta

我们有一个场景来显示向用户传播图片(或消息)的关系

例如:节点A的关系1有一条消息“Foo”,节点2的关系2也有相同的消息“Foo”。。。节点n的关系n也具有相同的消息“Foo”。

现在我们将通过查询Neo4j显示一个关系图

这是我的疑问:

MATCH (a)-[r1]-()-[r2]-()-[r3]-()-[r4]
WHERE a.id = '59072662'
and r2.message_id = r1.target_message_id
and r3.message_id = r2.target_message_id
and r4.message_id = r3.target_message_id
RETURN r1,r2,r3,r4
问题是,如果只有两级链接,则此查询不起作用。如果只有r1和r2,则此查询不返回任何内容


请告诉我如何编写密码查询以返回我的案例的一组关系?

您没有提供关于您的用例的详细信息。根据我的经验,我建议您重新思考图形数据建模的方法

消息似乎是您所在领域的中心概念。因此,消息可能应该建模为一个节点。要通过消息(m)连接(a)和(b),您可以使用类似于
(a)-[:SENT]>(m{message\u id:…})-[To:::]>(b)


使用这个(m)可以很容易地与另一条消息建立
引用关系,使上面的查询更具图形化。

您没有提供关于用例的详细信息。根据我的经验,我建议您重新思考图形数据建模的方法

消息似乎是您所在领域的中心概念。因此,消息可能应该建模为一个节点。要通过消息(m)连接(a)和(b),您可以使用类似于
(a)-[:SENT]>(m{message\u id:…})-[To:::]>(b)


使用此(m)可以很容易地将
引用到另一条消息的关系,从而使上面的查询更加生动。

添加到Stefan的答案中

如果要跟踪图片的传播方式,还应包括与图像的关系,如:

(message)-[:INCLUDES]->(image)
如果您想了解特定图片在消息网络中的传播方式:

MATCH (i:Image {url: "X"}), p=(recipient:User)<-[*]-(m:Message)<-[*]-(sender:User)
WHERE (m)-[:INCLUDES]->(i) WITH length(p) as length, sender ORDER BY length
RETURN DISTINCT sender
然后,要访问该路径中的关系,可以使用
rels
函数

RETURN rels(p)

对Stefan的回答补充道

如果要跟踪图片的传播方式,还应包括与图像的关系,如:

(message)-[:INCLUDES]->(image)
如果您想了解特定图片在消息网络中的传播方式:

MATCH (i:Image {url: "X"}), p=(recipient:User)<-[*]-(m:Message)<-[*]-(sender:User)
WHERE (m)-[:INCLUDES]->(i) WITH length(p) as length, sender ORDER BY length
RETURN DISTINCT sender
然后,要访问该路径中的关系,可以使用
rels
函数

RETURN rels(p)

嗨,Stefan,这个模型中已经有节点了。有可能有这样的查询吗?r1,r2,。。关系是否在您的模型中为消息建模,不是吗?我建议将其重构为节点建模消息,这样您就可以在它们之间保留图形引用,而不是通过匹配属性隐式地喜欢它们。嗨,Stefan,我们在这个模型中已经有了节点,这意味着用户。在一个图中是否可能有一个查询关系?谢谢嗨,Stefan,这个模型中已经有节点了。有可能有这样的查询吗?r1,r2,。。关系是否在您的模型中为消息建模,不是吗?我建议将其重构为节点建模消息,这样您就可以在它们之间保留图形引用,而不是通过匹配属性隐式地喜欢它们。嗨,Stefan,我们在这个模型中已经有了节点,这意味着用户。在一个图中是否可能有一个查询关系?谢谢请添加一个更详细的域模型,图片,不要谈论通用节点和关系,没有人能够帮助你!请添加一个更详细的域模型,图片,不要谈论通用节点和关系,没有人能够帮助你!