python - neo4j 向具有相似属性的节点添加关系

标签 python python-2.7 neo4j

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

node("name"="Bob","age":"32")
node("name"="cherry","age":"32")

我想在两个节点之间建立关系“age”。怎样才能做到呢? 我使用 py2neo python 模块。 非常感谢!

最佳答案

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

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

这将获取每个节点并查找具有相同属性 age 值的任何其他节点,并创建与该节点的关系 [:AGE]。它检查相关节点是否尚未与另一个节点建立这样的关系,因此如果再次运行它,您将不会得到重复项(但它确实在两个方向上创建了关系),并且它还检查另一个节点是否存在重复的关系。节点与第一个节点不同,因此它不会创建从节点到自身的关系。如果您想对不同的属性执行相同的操作,只需将该属性名称替换为 age 并为关系设置不同的类型。

由于您没有具体说明您的要求,我认为这回答了您的问题。您还可以在 python 代码中实现这一点,如果这就是您想要做的,也许您可​​以展示到目前为止您所尝试的内容(问题中的代码片段看起来不像有效的 python)。建议考虑在相关属性上对节点建立索引,这样当您有像 (Bob {age:32}) 这样的节点时,您可以查找具有相同年龄值的所有其他节点,迭代结果并创建关系,而不是每次迭代数据库中的所有节点。 Cypher 也是如此,标签和索引将提高真实数据集的性能,但上面的查询说明了一种实现方法。

关于python - neo4j 向具有相似属性的节点添加关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20124379/

相关文章:

python - NotImpemented 的行为比较

python - 不跳过的质量错误检查

database - Neo4j 2.0.0-RC1 删除每个关系的可选关系?

ruby-on-rails - 显示来自 Rails/Neo4j 的哈希值

java - Neo4j 在同一查询中删除/设置标签和属性

python - 如何将值从 1 列分配给另一列并在 Pandas 中发出警告

python - 如何使用 pandas 的 eval 函数计算两个日期列之间的天数?

python - Pandas:重新索引仅对具有唯一值的 Index 对象有效

python - 将 unhexlify 从 Python 2.7 移植到 Python 3.5

python - 在 print 语句中连接值