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 计算查询中每个帖子的4条最新评论_Neo4j - Fatal编程技术网

Neo4j 计算查询中每个帖子的4条最新评论

Neo4j 计算查询中每个帖子的4条最新评论,neo4j,Neo4j,我使用以下查询获取具有计算的喜欢次数和创建帖子的计算用户的帖子: MATCH (post:Post) WITH post ORDER BY post.createdAt DESC MATCH (user:User)-[:CREATED]->(post) RETURN post, user.username AS createdBy, size((post)<-[:LIKES]-(:User)) AS likes SKIP {skip} LIMIT {limit} 匹配

我使用以下查询获取具有计算的喜欢次数和创建帖子的计算用户的帖子:

MATCH (post:Post)
WITH post
ORDER BY post.createdAt DESC
MATCH (user:User)-[:CREATED]->(post)
RETURN post, user.username AS createdBy,
       size((post)<-[:LIKES]-(:User)) AS likes
SKIP {skip}
LIMIT {limit}
匹配(post:post)
有职位
按post.createdAt DESC订购
匹配(用户:用户)-[:已创建]->(post)
返回帖子,user.username作为createdBy,
大小(职位)(职位)
[匹配(注释:注释)-[:属于]->(post:post)按注释排序。时间戳ASC]
返回帖子,user.username作为createdBy,

大小((post)这可能会满足您的需要:

MATCH (user:User)-[:CREATED]->(post:Post)
WITH user, post
ORDER BY post.createdAt DESC
OPTIONAL MATCH (post)<-[:BELONGS_TO]-(comment:Comment)
WITH user, post, comment
ORDER BY comment.timestamp DESC
RETURN post, user.username AS createdBy,
       size((post)<-[:LIKES]-(:User)) AS likes,
       COLLECT(comment)[0..4] AS latestComments
SKIP {skip}
LIMIT {limit}
MATCH(用户:用户)-[:CREATED]->(post:post)
与用户,职位
按post.createdAt DESC订购

可选匹配(post)此查询的问题是,它仅显示至少有一条注释的帖子,并筛选出包含0条注释的帖子。如果帖子没有任何注释,我希望获取空数组[]对于最新的评论,或者至少是空值。效果很好。谢谢!Hello@PeterParada,到目前为止我认为我只能在朋友级别和其他关系中使用Neo4j,但从未想过我们也可以在帖子、评论和用户中使用它:)我目前使用的是MYSQL,但是所有的组合逻辑都在服务器代码中。您能告诉我在这种情况下使用Neo4j的性能如何,以及您的系统中有多少记录吗?谢谢
MATCH (user:User)-[:CREATED]->(post:Post)
WITH user, post
ORDER BY post.createdAt DESC
OPTIONAL MATCH (post)<-[:BELONGS_TO]-(comment:Comment)
WITH user, post, comment
ORDER BY comment.timestamp DESC
RETURN post, user.username AS createdBy,
       size((post)<-[:LIKES]-(:User)) AS likes,
       COLLECT(comment)[0..4] AS latestComments
SKIP {skip}
LIMIT {limit}