【问题标题】:In Neo4j,Is it possible to use Python to find a node by its ID and perform an operation?在 Neo4j 中,是否可以使用 Python 通过其 ID 查找节点并执行操作?
【发布时间】:2021-10-28 17:07:00
【问题描述】:

在 Neo4j 中,是否可以使用 Python 通过 ID 查找节点并执行操作? 上图,是我构建的知识图谱。我想要做的是使用 Python 根据节点“t1”和“t2”的 id 形成公式“t2-t1>6”。 谢谢你的帮助。

【问题讨论】:

  • MATCH (t1:Temperature{id:"T1"}), (t2:Teperature{id:"T2}) RETURN t1.value - t2.value > 6 我假设 T1 和 T2 是您的标识符(id 属性),并且温度读数以数字形式存储在 value 属性中。
  • 你如何在 Python 中做到这一点?正如您所说,T1 和 T2 是我的标识符(id 属性)。如何在 Python 中从 id(id from neo4j)形成公式“t1-t2 >6”?
  • 如果您有问题的详细信息,您将获得高质量的答案。在您的示例中, T1 和 T2 是节点, T2 - T1 > 6 没有意义。您不能对节点本身进行操作。
  • 我刚刚更新了我的问题,不知道你能看懂吗?

标签: neo4j


【解决方案1】:

你可以让它成为一个首先匹配你的温度节点的查询,然后返回你的表达式的结果:

with driver.session(database = "neo4j") as session:
    result = session.read_transaction(lambda tx: 
        tx.run(
            """
            MATCH (t1:Temperature{id: $id1}), (t2:Temperature{id: $id2}) 
            RETURN t1.value - t2.value > 6 as myBooleanResult
            """,
            id1="T1", id2="T2").single()["myBooleanResult"]
        )
    print(result)

【讨论】:

  • 我不明白你的代码。我的布尔结果是什么意思?当我使用你的代码时,TypeError: 'NoneType' object is not subscriptable.
  • "myBooleanResult" 是查询的“返回列”。如果您得到“NonType”对象不可下标,很可能是因为您的查询不匹配任何节点/没有返回任何结果行。
猜你喜欢
  • 2015-04-04
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
相关资源
最近更新 更多