我需要在 Neo4j 中检索一个节点,而我只有内部 ID。
有没有一种方法可以在一次密码查询中检索具有给定集合中 ID 的节点?
我正在使用 Neo4j 2.1.5
谢谢!
query="MATCH (n:Message) WHERE ID(n)="+id+" SET n.type='"+str(ans)+"', n.reprimands='"+str(ans2)+"'"
db.cypher_query(query)
我尝试过,但没有成功。
我尝试过,但没有成功。
我正在使用 neomodel 通过 python 访问数据库。
假设您使用的是 Neo4j 2.1.5(这是一个非常旧的版本),并且您通过 Python 中的 neomodel 访问数据库,以下是构建查询的方法。如果需要检索具有特定内部 ID 的节点,可以使用 Cypher 中的 ID() 函数:
node_id = 123 # Replace with the actual node ID
query = "MATCH (n:Message) WHERE ID(n) = {id} RETURN n"
parameters = {'id': node_id}
result = db.cypher_query(query, parameters)
在上面的查询中,MATCH (n:Message) 匹配标签为 Message 的节点,WHERE ID(n) = {id} 通过内部 ID 过滤这些节点。 {id} 是一个参数,会被参数字典中的 node_id 替换。这种方法可以防止 Cypher 注入,如果您直接将变量连接到查询字符串中,这可能会带来安全风险。
对于一组 ID,可以使用 IN 运算符:
node_ids = [123, 456, 789] # Replace with actual node IDs
query = "MATCH (n:Message) WHERE ID(n) IN {ids} RETURN n"
parameters = {'ids': node_ids}
result = db.cypher_query(query, parameters)
此查询将检索内部ID在node_ids列表中的所有消息节点。
请注意,Neo4j 2.1.5 已过时,强烈建议尽可能更新到较新的版本,因为 Cypher 和 Neo4j 的整体功能进行了大量改进和更改。
此外,较新的版本提供更好的性能、安全性和对高级功能的支持。