我在 Neo4J 2.0 文档中读过该START
子句是可选的,并且
Cypher 将尝试从您的查询中推断出起点
我通过实验发现
START user = node(*)
MATCH (user:User)-[r:KNOWS]-(user2:User)
RETURN user.username AS username, collect(user2.username) AS username2
给出相同的结果
MATCH (user:User)-[r:KNOWS]-(user2:User)
RETURN user.username AS username, collect(user2.username) AS username2
对于小数据集。
我的问题是:它在语义上是否相同?他们是否总是返回相同的结果集(我不是在谈论顺序)?即使是大型数据集?跳过START
保证遍历所有节点吗?如果它们在语义上是相等的,为什么还要使用node(*)
?