如何使用Neo4jClient添加多个标签?

问题描述 投票:0回答:1

在这个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。)

c# .net-core neo4j cypher neo4jclient
1个回答
1
投票

CREATEMERGE 允许您同时指定多个标签。

因此,你可以用以下方式代替:

.Merge("(n:Node { Token: {token} })")

你可以这样做(其中 SecondThird 也是标签)。)

.Merge("(n:Node:Second:Third { Token: {token} })")

CAVEAT

当你在一个标签中指定多个标签时,你应该小心。MERGE 子句,因为你可能会意外地创建你可能认为是重复的节点。

例如,假设你执行了这样一个查询,并创建了一个节点。

...
.Merge("(n:Node { Token: 'abc' })")
...

之后你又执行了这样的查询

...
.Merge("(n:Node:Second:Third { Token: 'abc' })")
...

后一个查询将 创建一个节点,因为还没有一个节点,所以将 三个标签.

另一方面,如果你以相反的顺序执行这些查询,就不会创建新的节点。

© www.soinside.com 2019 - 2024. All rights reserved.