Neo4j -- UNION 之后的 WHERE、ORDER BY 和 LIMIT
Neo4j -- WHERE, ORDER BY, and LIMIT after UNION
我正在尝试执行涉及 UNION 的查询,但在联合后使用 WHERE、ORDER BY 和 LIMIT 进行过滤。
基本思路是查找其他用户关注的用户加星标或发布的所有帖子。例如,帖子 s
和 p
是感兴趣的帖子。
MATCH (a:USER {id:0})-[:FOLLOWS]->(b:USER),
(b)-[:STARRED]->(s:POST),
(b)-[:POSTED]->(p:POST)
我想在过滤、排序和限制结果后,return s
和 p
的 id 属性 的并集。要创建的任何使此查询高效的相关索引也会有所帮助。
如果 u
是 s
和 p
的联合,我想做这样的事情:
WHERE u.time > 1431546036148
RETURN u.id ORDER BY u.time SKIP 0 LIMIT 20
我不知道如何从 s
和 p
得到 u
,我也不知道要创建什么索引才能使这个查询高效。
您可以使用多种关系类型,这样就不必执行 UNION。
我猜时间 属性 在 POST
节点上 :
MATCH (user:USER {id:0})-[:FOLLOWS]->(friend:USER)
MATCH (friend)-[:STARRED|:POSTED]->(p:POST)
WHERE p.time > 1431546036148
RETURN p
ORDER BY p.time
LIMIT 25
我正在尝试执行涉及 UNION 的查询,但在联合后使用 WHERE、ORDER BY 和 LIMIT 进行过滤。
基本思路是查找其他用户关注的用户加星标或发布的所有帖子。例如,帖子 s
和 p
是感兴趣的帖子。
MATCH (a:USER {id:0})-[:FOLLOWS]->(b:USER),
(b)-[:STARRED]->(s:POST),
(b)-[:POSTED]->(p:POST)
我想在过滤、排序和限制结果后,return s
和 p
的 id 属性 的并集。要创建的任何使此查询高效的相关索引也会有所帮助。
如果 u
是 s
和 p
的联合,我想做这样的事情:
WHERE u.time > 1431546036148
RETURN u.id ORDER BY u.time SKIP 0 LIMIT 20
我不知道如何从 s
和 p
得到 u
,我也不知道要创建什么索引才能使这个查询高效。
您可以使用多种关系类型,这样就不必执行 UNION。
我猜时间 属性 在 POST
节点上 :
MATCH (user:USER {id:0})-[:FOLLOWS]->(friend:USER)
MATCH (friend)-[:STARRED|:POSTED]->(p:POST)
WHERE p.time > 1431546036148
RETURN p
ORDER BY p.time
LIMIT 25