3

ドキュメント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>

2行目のようなノードを返すようにneo4jrestclientインデックスクエリの結果を取得するにはどうすればよいですか?

4

2 に答える 2

3

インデックスルックアップは複数のノードを返す可能性があるため、この場合はイテレータを返します。イテレータで次の項目を取得するには、.next()を実行します。

print playerIndex["player_id"]["Homer"].next(), "\n", playerNode

参照:https ://github.com/versae/neo4j-rest-client/blob/master/neo4jrestclient/iterable.py

于 2012-05-10T14:37:52.727 に答える
3

@espeed が指摘したように、call.next()はインデックス内の次のノードを提供します。イテレータを反復処理することもできます:

for node in playerIndex["player_id"]["Homer"]:
    print node, "\n", playerNode

または、スライスを使用してイテレータですべての結果を取得します[:]

print playerIndex["player_id"]["Homer"][:], "\n", playerNode

要素が 1 つしかない場合でも、インデックス クエリは常に要素のリストを返すため、クライアントはこのように動作します。したがって、これを処理する最善の方法は、遅延ロードを伴う反復子を使用することです。

于 2012-05-10T16:41:41.043 に答える