gpt4 book ai didi

neo4j - 如何在neo4j中仅限制特定节点?

转载 作者:行者123 更新时间:2023-12-05 01:19:50 25 4
gpt4 key购买 nike

我正在创建一个类似社交媒体的平台,它有一个家庭供稿。主页提要包含可以有任意数量的评论和喜欢的帖子。评论也可以有任意数量的赞。

当用户第一次加载主页提要时,我只想首先获取一定数量的帖子(10 个)。我目前正在运行的查询如下:

MATCH (p:Post)<-[:POSTED]-(u1:User), (u2: User {id: {id}})
WHERE u1.id = {id} OR (u1)-[:FRIENDS_WITH]-(u2)
OPTIONAL MATCH (u4:User)-[:LIKES]->(p)
OPTIONAL MATCH (u3:User)-[:COMMENTED]->(c:Comment)<-[:HAS_COMMENT]-(p)
OPTIONAL MATCH (u5:User)-[:LIKES]->(c)
RETURN p, u1, u3, c, u4, u5 ORDER BY p.timestamp DESC LIMIT 10

这里的问题是它只会获取 10 个结果,不一定是 10 个帖子。我想要一种方法来专门收集 10 个帖子,然后获取每个帖子的所有评论/喜欢/评论喜欢。这可以在单个查询中实现吗?

最佳答案

这可能会做你想要的:

MATCH (p:Post)<-[:POSTED]-(u1:User), (u2: User {id: {id}})
WHERE u1.id = {id} OR (u1)-[:FRIENDS_WITH]-(u2)
WITH p, u1
ORDER BY p.timestamp DESC
LIMIT 10
OPTIONAL MATCH (u4:User)-[:LIKES]->(p)
OPTIONAL MATCH (u3:User)-[:COMMENTED]->(c:Comment)<-[:HAS_COMMENT]-(p)
OPTIONAL MATCH (u5:User)-[:LIKES]->(c)
RETURN p, u1, u3, c, u4, u5;

它确保挑选的 10 个帖子是最新的。

它做出了合理的假设,每个 Post恰好由 1 个用户发布(因此 WITH 子句可以简单地为 WITH p, u1 而不是类似 WITH p, COLLECT(u1) 的内容)。

关于neo4j - 如何在neo4j中仅限制特定节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43597682/

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