如何使以下Cypher查询具有设置自动完成控制的结果?

时间:2016-01-05 05:25:28

标签: neo4j cypher

我正在执行以下Cypher查询: 比赛(a)a.itemId IN ['Q2','Q24','Q30','Q23','Q16','Q20']返回

我希望它返回与设置自动完成开关时相同的结果。这个问题被问及并回答1,但我不明白答案。这可以在一个查询中执行,如果是,那么修改后的查询会是什么?

2 个答案:

答案 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