gpt4 book ai didi

php - Neo4j 中的密码限制包括重复行

转载 作者:搜寻专家 更新时间:2023-10-31 21:29:14 24 4
gpt4 key购买 nike

将 Neo4J 与 Cypher 结合使用

我正在尝试获取本质上是用户“墙”的东西。在此墙上是您、您的 friend 的帖子和帖子评论。

到目前为止,这是我的查询:

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 个结果进行修剪,但这显然不对哈哈

最佳答案

这是@FrobberOfBits 在他对该问题的评论中提出的建议的细微变化。

使用 aggregation 时,而不是创建两个集合(一个用于 comment,另一个用于 commentAuthor),您可以创建一个元素为 comment 的集合>commentAuthor 对。

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, COLLECT({comment: comment, commentAuthor: commentAuthor}) AS comments
ORDER BY post.date_created DESC
LIMIT 10

关于php - Neo4j 中的密码限制包括重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31980143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com