【发布时间】:2019-03-04 07:13:21
【问题描述】:
我有一个用于批量创建节点的密码查询。
查询
UNWIND {batch} as row MERGE(m:TempEncounter {encounterId: row.encounterId}) ON CREATE SET m+=row
WITH m,row MATCH (u:Users {userId: row.creator }) MERGE (m)-[:USERS]->(u)
WITH m,row MATCH (l:Location {locationId: row.locationId }) MERGE (m)-[:LOCATION]->(l)
WITH m,row MATCH (p:Patient {patientId: row.patientId }) MERGE (m)-[:PATIENT]->(p)
WITH m,row MATCH (e:EncounterType {encounterTypeId: row.encounterType }) MERGE (m)-[:ENCOUNTERTYPE]->(e)
WITH m,row MATCH (u2:Users {userId: row.voidedBy }) MERGE (m)-[:USERS]->(u2)
return m;
上述密码查询的问题是,假设 row1 的 locationId 为 NULL(但其他行可能不是),则不会创建从 LOCATION 到 USERS 的关系。尽管可能会出现其他属性,例如(voidedBy, enounterType)
我怎样才能改进我的密码查询,以便它会跳过不存在于行中的特定关系,而是建立其他存在于行中的关系。
我正在使用这个查询来增加我在 neo4j 中的节点。这里需要性能
【问题讨论】: