我的问题肯定是Neo4j Spatial - How To Delete A Node的副本,但尚未解决。
据我了解,从空间索引中删除节点当前未在 neo4j-spatial-plugin 中实现(未记录)。
现在我的问题是: “我自己该怎么做?” 我可以看到索引的所有节点,但是如何查询引用我要删除的节点的那个节点?此外:我可以从索引中删除该节点而不损害其他任何东西吗?
谢谢 :-)
我的问题肯定是Neo4j Spatial - How To Delete A Node的副本,但尚未解决。
据我了解,从空间索引中删除节点当前未在 neo4j-spatial-plugin 中实现(未记录)。
现在我的问题是: “我自己该怎么做?” 我可以看到索引的所有节点,但是如何查询引用我要删除的节点的那个节点?此外:我可以从索引中删除该节点而不损害其他任何东西吗?
谢谢 :-)
是的。你是对的。正如这个链接所说,这是一个已知问题,并且很长时间以来它仍然处于打开状态。
现在,谈到您的问题,您可以按照以下步骤手动完成。
"id"
获取要删除的索引节点的内部属性。每当将任何节点添加到索引(假设为“geom”)时,UNIQUE RTREE_REFERENCE
都会将 a 添加到该节点。NEO4J
为该引用分配一个唯一的 id。这个分配的“id”不同于用于索引节点的“id”。例如,让我们考虑将“用户”节点id:7577
添加到索引“geom”中,使用localhost:7474/db/data/node/7577
.
现在,创建此索引后,您可以RTREE_REFERENCE
在 Neo4j 浏览器中使用以下命令检查它。MATCH (a)-[:RTREE_REFERENCE]->(b) where b.id=7577 return b;
我们需要获取节点“b”的“内部”id,我们可以通过在 Neo4j 浏览器中触发以下命令来做到这一点。MATCH (a)-[:RTREE_REFERENCE]->(b) where b.id=7577 return id(b);
MATCH (a)-[:RTREE_REFERENCE]->(b) where b.id=7577 return id(b);
,您将得到“无行”。因为RTREE_REFERENCE
已被删除。注意: 上述所有步骤也可以从您的代码中自动化,使用来自 Java/.Net/PHP 的任何 HttpClient。
希望这能回答你的两个问题
谢谢