有没有一种简单的方法可以确保 Neo4j/Cypher 中的集合中的元素是唯一的?像将集合变成哈希集之类的东西?
问问题
1466 次
3 回答
2
根据您要执行的操作,您可以使用 Cypher 执行此操作。
例如,如果您只想将不存在的项目添加到属性中,您可以通过多种方式执行此操作。
此示例过滤查询,如果集合修改是唯一被修改的属性,则此示例很有用:
START n=node({id}) WHERE NONE(x IN n.cols WHERE x = {val}) SET n.cols = n.cols + {val} RETURN n;
下一个示例最终将始终修改属性,但会确保唯一性,并且如果其他一些属性也需要同时修改,这将是一个有用的方法,但副作用是项目的顺序会改变:
START n=node({id})
WITH n, FILTER(x IN n.cols WHERE x <> {val}) as existingCols
SET n.cols = existingCols + {val}
RETURN n
于 2013-11-04T20:01:19.633 回答
1
实体(节点/关系)属性没有 的概念Set
,它们具有键/值,并且允许的值是原始/字符串数组。
如果您想要Set
类似的功能,则取决于您的应用程序插入数据以强制执行此唯一性。
Cypher 也没有任何功能。
于 2013-10-21T19:03:20.873 回答