Neo4j cypher喜欢状态更新吗
我正试图实现一个喜欢的机制,以演示新闻饲料在这里显示 基本上,当用户点击状态更新时,我想把用户节点链接到状态更新节点。但是,我想通过作者的节点搜索状态更新节点。因此,我使用如下内容:Neo4j cypher喜欢状态更新吗,neo4j,cypher,Neo4j,Cypher,我正试图实现一个喜欢的机制,以演示新闻饲料在这里显示 基本上,当用户点击状态更新时,我想把用户节点链接到状态更新节点。但是,我想通过作者的节点搜索状态更新节点。因此,我使用如下内容: MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o) WHERE n.username = "pewpewlasers" AND (m.permalink = "acode" OR o.permalink = "acode") MATCH (p:user)
MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o)
WHERE n.username = "pewpewlasers" AND (m.permalink = "acode" OR o.permalink = "acode")
MATCH (p:user)
WHERE id(p)=1,
CREATE (p)-[x:LIKED]->(o)
return x
MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o)
WHERE n.username = "pewpewlasers" AND m.permalink = "acode"
-- IF THE ABOVE GIVES AN OUTPUT THEN --
MATCH (p:user)
WHERE id(p)=1,
CREATE (p)-[x:LIKED]->(m)
return x
-- ELSE --
MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o)
WHERE n.username = "pewpewlasers" AND o.permalink = "acode"
MATCH (p:user)
WHERE id(p)=1,
CREATE (p)-[x:LIKED]->(o)
return x
基本上,我试图实现的是,通过作者的节点找到状态更新节点,然后使用永久链接代码查找更新
找到后,我希望通过like
关系将liker用户节点连接到状态更新
然而,您可能已经看到了这个密码的问题
此密码要求永久链接是与NEXT
关系连接的节点之一,否则,如果第一个节点(通过STATUSUPDATE
关系连接)包含永久链接,它将选择通过NEXT
关系连接的所有状态更新节点。因此,用户最终会喜欢所有帖子。可能需要的是以下内容:
MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o)
WHERE n.username = "pewpewlasers" AND (m.permalink = "acode" OR o.permalink = "acode")
MATCH (p:user)
WHERE id(p)=1,
CREATE (p)-[x:LIKED]->(o)
return x
MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o)
WHERE n.username = "pewpewlasers" AND m.permalink = "acode"
-- IF THE ABOVE GIVES AN OUTPUT THEN --
MATCH (p:user)
WHERE id(p)=1,
CREATE (p)-[x:LIKED]->(m)
return x
-- ELSE --
MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o)
WHERE n.username = "pewpewlasers" AND o.permalink = "acode"
MATCH (p:user)
WHERE id(p)=1,
CREATE (p)-[x:LIKED]->(o)
return x
这里有一个解决你问题的方法
START p = node(1) // Do you really want to use node numbers?
MATCH (n:user {username = 'pewpewlasers'})-[:STATUSUPDATE|:NEXT*]->(m {permalink : 'acode'})
CREATE (p)-[x:LIKED]->(m)
通过在MATCH子句的relationship部分使用“|”和multimatch,“m”节点可以匹配状态更新链的任何部分。如果您真的要使用节点编号(“id()”函数的输出)来获得您喜欢的用户节点,那么按照上面所示进行操作可能会更快。谢谢,这是可行的。我已经修改了代码,所以它使用的是用户名,而不是节点号。还有一个问题。在我们实现
CREATE(p)-[x:liked]->(m)
之前,是否可以检查用户是否已经喜欢状态更新?