Neo4jclient,如何统一或合并到不同的结果但类型相同?
Neo4jclient, How to Unify or Merge To Different result but in same type?
我的问题已通过检查两个相同节点的两种不同类型的关系解决。
例如,我们必须匹配如下部分:
1. Match("(u:User)-[r:USER_IN_SITE]->(w:WebEnvir)")
.Return(u => u.As<TUser>())
.Results;
2. Match("(u:User)-[r2:USER_IN_CLOUD]->(w:WebEnvir)")
.Return(u => u.As<TUser>())
.Results;
如何在 Match 之间进行合并或合并?
你可以做一个 UNION(我不知道如何做 neo4jclient),但你也可以这样做,我认为(在纯 Cypher 中):
MATCH (u:User), (w:WebEnvir)
OPTIONAL MATCH
(u)-[r:USER_IN_SITE]->(w), (u)-[r2:USER_IN_CLOUD]->(w)
RETURN u, w, collect(r), collect(r2)
但是,请注意,因为无论哪种方式,您都会得到一个完整的笛卡尔积(我认为,实际上您会用 UNION
做两次)。根据您拥有的 User
和 WebEnvir
节点数量,这可能是一个非常大的查询
我的问题已通过检查两个相同节点的两种不同类型的关系解决。
例如,我们必须匹配如下部分:
1. Match("(u:User)-[r:USER_IN_SITE]->(w:WebEnvir)")
.Return(u => u.As<TUser>())
.Results;
2. Match("(u:User)-[r2:USER_IN_CLOUD]->(w:WebEnvir)")
.Return(u => u.As<TUser>())
.Results;
如何在 Match 之间进行合并或合并?
你可以做一个 UNION(我不知道如何做 neo4jclient),但你也可以这样做,我认为(在纯 Cypher 中):
MATCH (u:User), (w:WebEnvir)
OPTIONAL MATCH
(u)-[r:USER_IN_SITE]->(w), (u)-[r2:USER_IN_CLOUD]->(w)
RETURN u, w, collect(r), collect(r2)
但是,请注意,因为无论哪种方式,您都会得到一个完整的笛卡尔积(我认为,实际上您会用 UNION
做两次)。根据您拥有的 User
和 WebEnvir
节点数量,这可能是一个非常大的查询