我有一个带有点列表的Shape。
我有以下要求:
1)检索一组有序的点;
2)插入/移除一个Point并保留其余点的顺序
我可以通过以下方式实现这一目标:
A)Point有一个 sequence 整数属性,可用于订购;
B)在每个Point之间添加一个:NEXT关系以创建一个链表。
我是Neo4j的新手,所以不确定哪种方法更适合满足要求?
对于第一个要求,我编写了以下查询,发现遍历的性能很差,但我确定它是一个构造错误的查询:
//A) 146 ms
Match (s:Shape {id: "1-700-y11-1.1.I"})-[:POINTS]->(p:Point)
return p
order by p.sequence;
//B) Timeout! Bad query I know, but dont know the right way to go about it!
Match path=(s:Shape {id: "1-700-y11-1.1.I"})-[:POINTS]->(p1:Point)-[:NEXT*]->(p2:Point)
return collect(p1, p2);
答案 0 :(得分:2)
要获得有序的点列表,请使用第二个查询的略微修改版本:
main.cpp:9:5: warning: conversion function converting 'Derived' to its base class 'Base' will never be used
operator Base() { return Base { 'a' }; }
例如要删除的查询:
Match path=(s:Shape {id: "1-700-y11-1.1.I"})-[:POINTS]->(P1:Point)
-[:NEXT*]-> (P2:Point)
WHERE NOT (:Point)-[:NEXT]->(P1) AND
NOT (P2)-[:NEXT]->(:Point)
RETURN TAIL( NODES( path) )