Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j-如何使用属性值设置标签_Neo4j - Fatal编程技术网

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

neo4j-如何使用属性值设置标签,neo4j,Neo4j,我有没有标签的节点,但有一个属性节点类型 有没有办法用NodeType属性的值设置这些节点的标签 谢谢 否,目前无法使用变量定义标签 您必须在应用程序中通过获取要在其上添加标签的所有节点并发送密码查询来添加此标签来完成此操作 PHP中的一个快速示例: $nodes = $client->sendCypherQuery('MATCH (n) WHERE n.nodeType = "MyType" RETURN n'); foreach ($nodes as $node) { $lab

我有没有标签的节点,但有一个属性节点类型

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


谢谢

否,目前无法使用变量定义标签

您必须在应用程序中通过获取要在其上添加标签的所有节点并发送密码查询来添加此标签来完成此操作

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;
}

您不能使用变量,但仍然可以在密码查询(或至少其中一些)而不是脚本中使用。如果您只有少数几个不同的标签,那么这可能会很好地工作,但对于许多标签来说,伸缩性不是很好

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;

黑客解决方案是使用类似以下内容的密码查询:

start n=node({nodeId})
set n :LABEL with n
return labels(n)
并在此查询上运行一些文本操作,以便插入标签。下面是一个java示例:

String setNodeLabelQuery = getQueryString();
setNodeLabelQuery = setNodeLabelQuery.replaceFirst("LABEL", "LABEL_B);

其中
getQueryString()
是一个返回查询字符串的方法。

使用Cypher和APOC将属性值移动到标签

// create a node with property studio
   create (n:Movies {name: 'A Few Good Men', studio: 'Warner Brothers'})
// move the 'studio' property to a label and remove it as a property
   MATCH (n:Movies)
   call apoc.create.addLabels([ id(n) ], [ n.studio ]) yield node
   with node
   remove node.studio
   return node

回答得好。很高兴在Cypher中看到这样的调整。