Neo4j-如何使用内部ID进行匹配

问题描述 投票:0回答:1

我需要在 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 访问数据库。

python neo4j cypher neomodel
1个回答
0
投票

假设您使用的是 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 的整体功能进行了大量改进和更改。

此外,较新的版本提供更好的性能、安全性和对高级功能的支持。

© www.soinside.com 2019 - 2024. All rights reserved.