如何查询部分节点标签?
例如,如果我有像下面这样的节点whit标签 (n:用户:v#1.1.3) (n:用户:v#1.1.4) (n:用户:v#1.1.3.2) (n:usei:v#1.01.3.3)
我怎么能问v> 1.1.3将所有子部分视为数字?
返回应该是最新的3个节点
谢谢
保
答案 0 :(得分:1)
我尝试了类似的查询:
CREATE (n:Foo_1_1),(m:Foo_1_2),(p:Foo_1_1_1),(q:Foo_1_2_1)
RETURN n, m, p, q;
您可以将节点与此匹配:
MATCH n
WITH n,[label IN labels(n)| label =~ 'Foo.*' AND TOINT(REPLACE(REPLACE(label,'Foo_',''), '_', '')) > 11] AS allResults
WHERE ANY (matches IN allResults WHERE matches = TRUE)
RETURN n
在这里,我尝试匹配版本严格大于Foo_1_1的所有标签(实际上对应于TOINT o REPLACE o REPLACE应用程序之后的11 ["> 11" part])。 然后,我根据这个小版本比较返回所有至少有1个标签匹配的节点。
但是,我建议这些标签成为常规索引属性。上一个查询只会成为Foo_*
属性的全文搜索,并且肯定会比此查询执行得更好。
如迈克尔所建议的那样,版本图也可能是一个可行的选择。
答案 1 :(得分:1)
谢谢大家!
我最终选择将其作为版本图实现,因为它似乎是最简单且绝对完整的方式。
保