簡體   English   中英

py2neo(1.6)如何在沒有CypherQuery的情況下按節點屬性獲取現有節點

[英]py2neo (1.6) how to get an existing node by node property without CypherQuery

我正在使用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和編寫普通密碼?

您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM