将 Neo4J 与 Cypher 一起使用
我正在尝试获取本质上是用户“墙”的东西。在这面墙上是您、您的朋友和帖子评论的帖子。
到目前为止,这是我的查询:
match (a:Account)-[:FRIEND*0..1]->(friend:Account)-[:POST]->(post:Post)
where a.uid = "u132984734sas"
optional match (post)<-[:COMMENT*0..1]-(comment:Comment)<-[:AUTHOR]-(commentAuthor:Account)
return friend,post,comment,commentAuthor
ORDER BY post.date_created DESC
LIMIT 10
注意LIMIT 10
好吧,我有一半预料到了这一点,但很像 PHP 中的 Doctrine 在获取嵌套数组时,这里返回一行,其中包含顶级帖子和帖子中每个评论的单个评论。
这意味着,如果有 20 个帖子符合此条件而没有获取评论,它将返回 10 个实际帖子,这要归功于该LIMIT
条件
假设前 10 个结果中的单个帖子有 2 个评论,现在结果集只有将有 9 个帖子而不是 10 个。因为如果可用,第一行总是返回第一条评论,因此它不会减少结果集返回的数量,但每条帖子的每条额外评论都会减少。
我想在这里得到一个可靠的 10 个结果,但我不确定在这里做什么。
为简洁起见,我使用的是Everyman\Neo4JPHP
我什至考虑过查询 50 个帖子并通过只选择前 10 个结果进行修剪,但这显然看起来不对哈哈