【问题标题】:py2neo (1.6) how to get an existing node by node property without CypherQuerypy2neo (1.6) 如何在没有 CypherQuery 的情况下按节点属性获取现有节点
【发布时间】:2015-05-27 15:32:52
【问题描述】:

我正在使用 py2neo(1.6 版)。我想通过它的属性从图中获取一个现有节点,然后用它来创建关系。

我的解决方案:

graph = neo4j.GraphDatabaseService("http://...")

query = neo4j.CypherQuery(graph,"MATCH (n:NodeType) where n.property = 'property' return n")
r = query.execute()
if len(r.data)==0:
    raise Exception("node does not exist")                
node = r.data[0]['n']

newNode = batch.create(node(name="APropertyOfNewNode"))
batch.add_labels(newNode, "LableOfNewNode")
relation  = rel(node, "relationshipName", newNode)
batch.create(relation)

batch.submit()
batch.clear()

是否有一种高级方法可以在不使用CypherQuery 和编写普通密码的情况下通过其属性获取现有节点?

【问题讨论】:

    标签: python neo4j py2neo


    【解决方案1】:

    你可以使用GraphDatabaseService.find:

    from py2neo import neo4j
    graph = neo4j.GraphDatabaseService('http://localhost:7474/db/data/')
    
    movies = graph.find('Movie', 'title', 'The Matrix')
    

    但是 graph.find 返回一个生成器对象。

    movies
    # <generator object find at 0x10b64acd0>
    

    所以你只能迭代一次。

    for movie in movies:
        print type(movie)
        print movie['tagline']
    
    # <class 'py2neo.neo4j.Node'>
    # Welcome to the Real World
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多