我正在执行以下Cypher查询: 比赛(a)a.itemId IN ['Q2','Q24','Q30','Q23','Q16','Q20']返回
我希望它返回与设置自动完成开关时相同的结果。这个问题被问及并回答1,但我不明白答案。这可以在一个查询中执行,如果是,那么修改后的查询会是什么?
答案 0 :(得分:1)
是的,您应该能够在一个查询中完成所有操作。要获得有问题的节点及其关系,您可以这样做:
MATCH (a)
WHERE a.itemId IN ['Q2', 'Q24', 'Q30', 'Q23', 'Q16', 'Q20']
OPTIONAL MATCH (a)-[rel]-()
RETURN a, collect(rel)
对于每个节点,这将返回一个关系数组。
根据您用于Neo4j的库,可能会或可能不会为您提供有用的东西来为您提供startnode / endnode。你也可以这样做:
MATCH (a)
WHERE a.itemId IN ['Q2', 'Q24', 'Q30', 'Q23', 'Q16', 'Q20']
OPTIONAL MATCH (a)-[rel]-()
RETURN a, collect({rel: rel, start_node: startNode(rel), end_node: endNode(rel)})
这会为每个包含数据对象/地图的节点提供一个数组。
答案 1 :(得分:0)
对如何仅返回匹配的节点之间的关系的问题进行了单独的澄清。这应该是这样的:
MATCH (a)
WHERE a.itemId IN {itemIds}
OPTIONAL MATCH (a)-[rel]-(b)
WHERE b.itemId IN {itemIds}
RETURN a, collect(rel)
同样,您也可能想要返回关系的startNode
/ endNode