在 Cypher 查询中,我可以在查询中间插入
ORDER BY
,例如
MATCH (p:Product)
WITH p
ORDER BY p.id DESC
LIMIT 5
MATCH (p)-[:CREATED_BY]->(u:User)
RETURN p.id, u.name
在
SLOTTED
或 PIPELINED
运行时,我将收到正确排序的结果。例如:
p.id | u.name
---------------
5 | someName
4 | someName
3 | someName
2 | someName
1 | someName
使用
PARALLEL
运行时时,即使我在 MATCH
子句之后有额外的 ORDER BY
语句,我是否应该期望得到相同的结果(保持正确的顺序)?
不保证。以下是 Cypher 手册对此的描述:
当 ORDER BY 出现在WITH子句中时,紧随其后的 子句将按指定的顺序接收记录。订单不是 保证在以下条款之后保留,除非也 有一个 ORDER BY 子条款。
时隙式和流水线式可能会保留顺序,即使不能保证,但并行式可能不会。
https://neo4j.com/docs/cypher-manual/current/clauses/order-by/#order-with