我正在使用 Neo4j 和 gem Neography 在 Ruby 中编码。在查询的时候,我使用了Neography提供的execute_neo4j_query方法。我不确定最佳实践。
假设我使用以下代码来获取用户:
user1 = @neo.execute_neo4j_query("
MATCH (user:User {user_id: '#{params[:user_id_1]}'})
RETURN id(user)
LIMIT 1
")
并以类似方式获取另一个用户
user2 = @neo.execute_neo4j_query("
MATCH (user:User {user_id: '#{params[:user_id_2]}'})
RETURN id(user)
LIMIT 1
")
然后我对这两个用户做了一些事情。
现在我需要在这两个用户之间创建一个边缘,所以我这样做了
@neo.execute_neo4j_query("
MATCH (user1:User {user_id: '#{params[:user_id_2]}'})
MATCH (user2:User {user_id: '#{params[:user_id_2]}'})
CREATE UNIQUE (user1)-[:FOLLOW]->(user2)
")
但是,我认为这种方法不是最优的,因为我两次查询了相同的两个用户。
我的问题是:
1)有没有办法使用Neography重用以前查询的结果?
2)除了直接使用execute_neo4j_query,是否推荐使用Neography提供的方法如@neo.create_node?我选择后者是因为我不确定封装的方法是否能满足我的任务。所以,如果你能用原生 Neography 代码重写我上面的代码,将不胜感激。