2013-06-10 2 views
1

Я использую Neo4j 1.9 M03 в режиме HA, моя задача - удалить все узлы и отношения, а также индексы, которые старше определенной даты.Удалить старые узлы и отношения с Cypher в Neo4j 1.9

Для этого я создал свойство для узлов и отношений. Свойство является датой в формате «YYMMDD».

Я пытаюсь использовать следующий Cypher запрос для выполнения операции упоминалось выше:

START n0=node(0), nx=node(*) 
MATCH n0-[r0?]-(), nx-[rx?]-() 
WHERE nx <> n0 AND HAS (nx.datestamp) AND nx.datestamp <= yyyymmdd 
OR HAS (rx.datestamp) AND rx.datestamp <= yyyymmdd 
DELETE r0,rx,nx 

Этот запрос не выполняет операцию я пожелаю. Что я могу делать неправильно здесь?

+0

Является ли ваша дата строкой? – Luanne

+0

Нет, это целое – x13

ответ

0
START rx=rel(*) 
WHERE HAS (rx.datestamp) AND rx.datestamp <= yyyymmdd 
DELETE rx; 

Вы должны убедиться, что узлы вы хотите удалить не имеют отношения слева, либо отфильтровать те или вы удалите их дополнительно

START nx=node(*) 
WHERE HAS (nx.datestamp) AND nx.datestamp <= yyyymmdd 
AND NOT((nx)--()) 
DELETE nx; 
+0

Большое спасибо Майкл. Однако пространство, занятое в базе данных Neo4j, остается неизменным. Удаляются ли узлы и отношения? В веб-администраторе Neo4j я запускаю запрос Neo4j Cypher, чтобы подсчитать все удаленные узлы и отношения, которые старше, чем некоторые данные, а результат запроса - 0 узлов и/или 0 отношений. – x13

+0

Майкл Свойства узла/отношения не были удалены с этим вопросом cypher правильно? Как я могу удалить свойства node/relationship? Метрика «Использование диска базы данных» продолжает расти даже после удаления узлов/отношений. Заранее спасибо – x13

1

Вы можете попробовать это один

START n=node(*) 
MATCH n-[r?]-() 
WHERE (n.datestamp? <= yyyymmdd AND r.datestamp? <= yyyymmdd) 
DELETE r,n 
+0

Кажется, но метрика «использование диска базы данных» продолжает расти даже после удаления узлов/отношений ... – x13