Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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
Python neo4j将关系添加到具有类似属性的节点_Python_Python 2.7_Neo4j - Fatal编程技术网

Python neo4j将关系添加到具有类似属性的节点

Python neo4j将关系添加到具有类似属性的节点,python,python-2.7,neo4j,Python,Python 2.7,Neo4j,我有DB,我想连接所有具有相同属性的节点。例如: node("name"="Bob","age":"32") node("name"="cherry","age":"32") 我想在两个节点之间建立关系“age”。如何做到这一点? 我使用py2neopython模块。 非常感谢 您的问题有点含糊不清,但对于一个非常通用的解决方案,您可以尝试这样的密码查询(2.0语法) 匹配n,m 其中nm和n.age=m.age和NOT(n-[:age]->m) 创建n-[r:AGE]->m 返回r 这将获

我有DB,我想连接所有具有相同属性的节点。例如:

node("name"="Bob","age":"32")
node("name"="cherry","age":"32")
我想在两个节点之间建立关系
“age”
。如何做到这一点? 我使用
py2neo
python模块。
非常感谢

您的问题有点含糊不清,但对于一个非常通用的解决方案,您可以尝试这样的密码查询(2.0语法)

匹配n,m
其中nm和n.age=m.age和NOT(n-[:age]->m)
创建n-[r:AGE]->m
返回r
这将获取每个节点,并查找属性
age
具有相同值的任何其他节点,并创建与该节点的关系
[:age]
。它检查所讨论的节点是否与另一个节点没有这样的关系,因此如果再次运行它,将不会得到重复的节点(但它确实在两个方向上创建了关系),它还检查另一个节点是否与第一个节点不同,因此它不会创建从一个节点到自身的关系。如果要对不同的属性执行相同的操作,可以将该属性名称替换为
age
,并为关系设置不同的类型


既然你没有具体说明你的要求,我想这就回答了你的问题。您也可以在python代码中实现这一点,如果这是您想要做的,也许您可以展示您迄今为止所做的尝试(您问题中的代码片段看起来不像有效的python)。建议您可以考虑在相关属性上对节点进行索引,这样当您有一个节点如<代码>(Bob {年龄:32 })< /> >时,您可以查找所有与年龄相同的值的节点,迭代结果并创建关系,而不是迭代遍历DB中的所有节点。同样,对于Cypher,标签和索引将提高实际数据集的性能,但上面的查询说明了一种可以实现的方法。

您的问题有点模糊,但对于非常通用的解决方案,您可以尝试这样的Cypher查询(2.0语法)

匹配n,m
其中nm和n.age=m.age和NOT(n-[:age]->m)
创建n-[r:AGE]->m
返回r
这将获取每个节点,并查找属性
age
具有相同值的任何其他节点,并创建与该节点的关系
[:age]
。它检查所讨论的节点是否与另一个节点没有这样的关系,因此如果再次运行它,将不会得到重复的节点(但它确实在两个方向上创建了关系),它还检查另一个节点是否与第一个节点不同,因此它不会创建从一个节点到自身的关系。如果要对不同的属性执行相同的操作,可以将该属性名称替换为
age
,并为关系设置不同的类型


既然你没有具体说明你的要求,我想这就回答了你的问题。您也可以在python代码中实现这一点,如果这是您想要做的,也许您可以展示您迄今为止所做的尝试(您问题中的代码片段看起来不像有效的python)。建议您可以考虑在相关属性上对节点进行索引,这样当您有一个节点如<代码>(Bob {年龄:32 })< /> >时,您可以查找所有与年龄相同的值的节点,迭代结果并创建关系,而不是迭代遍历DB中的所有节点。同样,密码、标签和索引也可以提高实际数据集的性能,但上面的查询说明了一种方法。您是在谈论属性还是标签?到目前为止你都试了些什么?对不起。正在编辑。现在还不清楚你想做什么。是否要为年龄:32创建一个节点,并将其他两个节点连接到该节点?您是在谈论属性还是标签?到目前为止你都试了些什么?对不起。正在编辑。现在还不清楚你想做什么。是否要为年龄:32创建一个节点,并将其他两个节点连接到该节点?非常感谢!这正是我所需要的!还有一个小问题,我必须使用匹配前开始(1.9版)如何忽略属性“age”不存在的节点?请阅读文档中的
,例如
,非常感谢!这正是我所需要的!还有一个小问题,我必须使用匹配前开始(1.9版)如何忽略属性“age”不存在的节点?例如,请阅读文档中的
,其中

MATCH n, m 
WHERE n<>m AND n.age = m.age AND NOT (n-[:AGE]->m) 
CREATE n-[r:AGE]->m 
RETURN r