在我们公司,我们通过网络服务向客户返回ID列表。这些ID在整个系统中是唯一的。他们调用传递ID的其他Web服务。我们并不总是知道我们收到的身份证的标签。
这不会执行:
MATCH(n {id:{my_id}) ...
虽然我们在几乎所有标签类型上都有索引,但是这个查询没有标签,因此我没有使用索引。
向所有节点添加一个名为“GLOBAL”(或其他)的标签是不是一个坏主意,所以我们可以在GLOBAL.id上添加一个唯一约束?然后上面的查询可能是
MATCH(n: GLOBAL{id:{my_id}})...
并且表现很好。
还有其他办法吗?
答案 0 :(得分:0)
您可以使用Neo4j的内部ID来识别您的资源,但这不是最佳做法,请参阅Should we use the Neo4J internal id?
这是如何使用他的neo4j的内部id来获取节点:
START n=node({my_id}) return n
它实际上比MATCH子句快,因为这里你的查询直接从一个节点开始,并且不必过滤一组节点的属性,因为它是内部id。
如果您可以处理内部ID限制,那么它就是您正在寻找的解决方案。