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 - Fatal编程技术网

计算neo4j中的关系数

计算neo4j中的关系数,neo4j,Neo4j,我有两个节点Post和User,用户可以在其中喜欢Post,这将创建一个关系(User:User)-[:LIKES]->(Post)。我有一个问题来计算每个帖子喜欢的数量。如果没有人喜欢它,它应该返回0,但是它总是返回0。 (仅供参考:我还在计算谁创建了该职位) 我的问题是: MATCH (post:Post) MATCH (user:User)-[:CREATED]->(post) OPTIONAL MATCH (post)<-[likes:LIKES]-(:User) WHERE

我有两个节点PostUser,用户可以在其中喜欢Post,这将创建一个关系
(User:User)-[:LIKES]->(Post)
。我有一个问题来计算每个帖子喜欢的数量。如果没有人喜欢它,它应该返回0,但是它总是返回0。 (仅供参考:我还在计算谁创建了该职位)

我的问题是:

MATCH (post:Post)
MATCH (user:User)-[:CREATED]->(post)
OPTIONAL MATCH (post)<-[likes:LIKES]-(:User)
WHERE post.uuid = {postUUID} AND NOT exists(post.deleted)
RETURN post,
       user.username AS `createdBy`,
       count(likes) AS `likes`
匹配(post:post)
匹配(用户:用户)-[:已创建]->(post)

可选匹配(post)这可能更适合您:

MATCH (user:User)-[:CREATED]->(post:Post)
WHERE post.uuid = {postUUID} AND (NOT user.deleted OR NOT EXISTS(user.deleted))
RETURN
  post,
  user.username AS `createdBy`,
  SIZE((post)<-[:LIKES]-(:User)) AS `likes`
MATCH(用户:用户)-[:CREATED]->(post:post)
其中post.uuid={postuid}和(非user.deleted或不存在(user.deleted))
返回
邮递
user.username为`createdBy`,

SIZE((post)您将postuid作为一个参数。是否只想返回具有该uuid的帖子的数据?因为现在您的查询正在获取所有用户的所有帖子,并且只获取具有给定uuid的帖子的likes计数(所有其他人将返回0个喜欢,因为可选匹配仅影响具有给定uuid的帖子)确切地说,只需要使用一些uuid计算特定帖子的喜欢数。因为当我使用just MATCH时,它会计算喜欢数,但如果没有喜欢,则帖子不会显示在结果中。如果post.deleted为true,它是否仍应返回数据,但喜欢数为0?不,如果帖子被删除,则不会显示任何数据。至少不会显示post节点。但应该没问题,我也尝试过没有这个检查。看起来这个查询总是给我发送帖子有1个like,我检查了是否没有like,然后创建了2个like,查询结果仍然是1。我用query:MATCH()-[likes:likes]-()RETURN likes检查了它,它显示了2个用户节点用likes关系指向帖子。COUNT()通常不适用于模式,我不太确定它返回的是什么。请改用SIZE(),它将返回模式匹配的数字。您很好。SIZE()有效!您应该回答这个问题,我将接受您的答案,以便其他人稍后可以看到。好的,请查看我的更正答案。
(post)