neo4j - 如何使用属性值设置标签

Oli*_*ler 7 neo4j

我有没有标签的节点,但属性NodeType

有没有办法用NodeType属性的值设置这些节点的标签?

谢谢!

Dav*_*ett 6

您不能使用变量,但仍然可以在密码查询(或至少其中一些查询)而不是脚本中执行此操作。如果您只有少数不同的标签,这可能效果很好,但对于许多标签来说无法扩展。

MATCH (n) 
WHERE length(labels(n)) = 0 
AND n.type = 'XX' 
SET n:XX;


MATCH (n) 
WHERE length(labels(n)) = 0 
AND n.type = 'XY' 
SET n:XY;
Run Code Online (Sandbox Code Playgroud)


Chr*_*sen 5

不可以,目前无法定义带有变量的标签。

您必须在应用程序中执行此操作,方法是获取要在其上添加标签的所有节点,然后发送Cypher Query添加该标签。

PHP中的一个简单示例:

$nodes = $client->sendCypherQuery('MATCH (n) WHERE n.nodeType = "MyType" RETURN n');
foreach ($nodes as $node) {
    $label = $node->getProperty('nodeType');
    $id = $node->getId();
    $client->sendCypherQuery('MATCH (n) WHERE id(n) = '.$id.' SET n :'.$label;
}
Run Code Online (Sandbox Code Playgroud)