我正在尝试关注文档 http://readthedocs.org/docs/neo4j-rest-client/en/latest/indices.html
我希望索引查询返回一个节点,但它返回一个“Iterable:Node”:
db = GraphDatabase("http://localhost:7474/db/data")
playerIndex = db.nodes.indexes.get("index1")
playerNode = db.nodes.create(player_id = "Homer")
playerIndex.add("player_id", "Homer", playerNode)
print playerIndex["player_id"]["Homer"], "\n", playerNode
打印:
<Neo4j Iterable: Node>
<Neo4j Node: http://localhost:7474/db/data/node/157>
如何获取neo4jrestclient索引查询结果以返回类似第二行的节点?
答案 0 :(得分:3)
索引查找可以返回多个节点,所以在这种情况下,它返回一个迭代器。要获取迭代器中的下一个项,请执行.next():
print playerIndex["player_id"]["Homer"].next(), "\n", playerNode
请参阅:https://github.com/versae/neo4j-rest-client/blob/master/neo4jrestclient/iterable.py
答案 1 :(得分:3)
正如@espeed指出的那样,调用.next()
将为您提供索引中的下一个节点。
您还可以遍历迭代器:
for node in playerIndex["player_id"]["Homer"]:
print node, "\n", playerNode
或者只是使用切片[:]
:
print playerIndex["player_id"]["Homer"][:], "\n", playerNode
客户端以这种方式运行,因为任何索引查询总是返回元素列表,即使只有一个元素。因此,处理此问题的最佳方法是使用延迟加载的迭代器。