我有一组节点,我想编写一个查询来查找这些节点之间存在的每个关系。
有什么建议吗?
我的第一个尝试是MATCH a- [rel] -b WHERE ...而我的WHERE子句将是我在节点集中所有id的OR。
有更好的主意吗?
答案 0 :(得分:0)
你可以这样做:
var A = [60, 80, 82, 50, 80, 80];
var B = ['a', 'b', 'c', 'd', 'e', 'f'];
var result = _.unzip(_.sortBy(_.zip(A, B), '-0'));
var A_sorted = result[0]; // [82, 80, 80, 80, 60, 50]
var B_sorted = result[1]; // ["c", "b", "e", "f", "a", "d"]]
在这里,您将传递MATCH (a)-[rel]-()
WHERE ID(a) IN {node_ids}
RETURN rel, ID(rel), type(rel), ID(startNode(rel)), ID(endNode(rel))
parameter这是一个数组。
另请注意,如果Neo4j对节点进行碎片整理,则使用内部Neo4j ID进行长期节点引用可能会中断。
答案 1 :(得分:0)
在这些答案中,我假设您将ID列表作为名为ids
的参数传递。
如果要排除从节点到自身的关系:
MATCH (a)-[r]-(b)
WHERE id(a) IN {ids} AND id(b) IN {ids} AND a <> b
RETURN r;
如果要包含从节点到自身的关系:
MATCH (a)-[r]-(b)
WHERE id(a) IN {ids} AND id(b) IN {ids}
RETURN r;