考虑Neo4J 2.0 Cypher查询
MERGE (u:User {id_str:"123"})
ON CREATE
SET {giant_params_string_from_twitter_api}
ON MATCH
SET u.lastSeen = timestamp()
RETURN u
这里我从Twitter下载了用户的元数据,如果用户不存在,那么我会插入他的所有元数据。如果用户已经存在,那么我只是修改他的时间戳。
需要检索params的Twitter API的调用是漫长而昂贵的(特别是当你考虑到我不断受到速率限制时)。并且很多时候节点已经存在于数据库中。这是宁愿做的事情:
MERGE (u:User {id_str:"123"})
ON CREATE
SET get_twitter_params("123")
ON MATCH
SET u.lastSeen = timestamp()
RETURN u
在ON CREATE中,我想以某种方式链接回一个回调来提取这些数据。
有没有办法调用创建我自己的函数在Cypher中使用?
答案 0 :(得分:1)
还没有!他们正在考虑实现用户定义函数(UDF)的方法,所以我认为它不会太过分。
在向Twitter发出请求之前,您可能会考虑检查是否存在,如果这是一个昂贵的电话 - 很遗憾,您必须在单个Cypher请求之外执行此操作。
答案 1 :(得分:0)
从Neo4j 3.0开始,您现在可以编写自己的功能。然而,它们是用Java编写的。
请查看此链接以获取更多详细信息:https://neo4j.com/developer/procedures-functions/