ノート
これは、私が尋ねた単純な質問ではなく、いくつかの質問になるので、フォローアップをここで独自の質問に分割します。
元の質問
ID のリストを受け取り、それらのいずれかがグラフに含まれているかどうかを最初にテストしています。それらが /ある場合は、それらのノードをさらに処理しています。
では、例えば…
fids = get_fids(record) # [100001, 100002, 100003, ... etc]
ids_in_my_graph = filter(id_is_in_graph, fids) # [100002]
def id_is_in_graph(id):
val = False
query = """MATCH (user:User {{id_str:"{}"}})
RETURN user
""".format(id)
n=neo4j.CypherQuery(graph_db,query).execute_one()
if n:
val = True
return(val)
ご想像のとおり、フィルターを使用してこれを実行し、各 ID がグラフにあるかどうかを順次テストするのは非常に遅く、neo4j を適切に使用していないことは明らかです。
(User{id_str: [mylist]})
クエリのようなリストを作成し、グラフにある ID のみを返すように、クエリをどのように言い換えればよいでしょうか?