在这个CYPHER命令中设置多个标签的最好方法是什么?
设置属性可以通过替换来实现,但我不知道如何设置标签(无论是否有替换。)
var cypherQuery = _graphClient.Cypher
.Merge("(n:Node { Token: {token} })")
.OnCreate().Set("n = {properties}")
.OnMatch().Set("n = {properties}")
.WithParams(new
{
token = principalMetaNode.Token,
properties = parameterMap
});
(principalMetaNode.Token是一个Guid。)
CREATE
和 MERGE
允许您同时指定多个标签。
因此,你可以用以下方式代替:
.Merge("(n:Node { Token: {token} })")
你可以这样做(其中 Second
和 Third
也是标签)。)
.Merge("(n:Node:Second:Third { Token: {token} })")
当你在一个标签中指定多个标签时,你应该小心。MERGE
子句,因为你可能会意外地创建你可能认为是重复的节点。
例如,假设你执行了这样一个查询,并创建了一个节点。
...
.Merge("(n:Node { Token: 'abc' })")
...
之后你又执行了这样的查询
...
.Merge("(n:Node:Second:Third { Token: 'abc' })")
...
后一个查询将 还 创建一个节点,因为还没有一个节点,所以将 三个标签.
另一方面,如果你以相反的顺序执行这些查询,就不会创建新的节点。